У меня возникли проблемы с попыткой построить полярную розу со смещением C уравнения
r (theta) = cos (k * theta) + C. Я пытаюсь построить эту полярную розу:
http://en.wikipedia.org/wiki/Polar_coordinate_system#/media/File:Cartesian_to_polar.gif
Полярное уравнение может быть:
r (theta) = cos (k * theta)
или
r (theta) = sin (k * тета)
Я хочу нарисовать уравнение полярной розы:
r (theta) = 2 + sin (6 * theta)
Хорошо, и параметрические уравнения будут такими:
x = C + sin (k * theta) * cos (theta)
y = C + sin (k * theta) * sin (theta)
На моем холсте (область рисования) моя точка отсчета находится не в центре экрана, поэтому мне нужно перевести на нее розу. Хорошо, ничего страшного. Другой момент заключается в том, что мне нужно масштабировать розу, чтобы она была видна, иначе она будет слишком маленькой, но все же без проблем, это объясняет: 100 *. Вот мой код, он написан на C ++, кстати:
for ( float t = 0; t < PI_2; t+= 0.01 )
{
r = Origin.get_x() + 100*(2+(sin(6*t) * cos(t)));
h = Origin.get_y() + 100*(2+(sin(6*t) * sin(t)));
point(r,h);
}
Я знаю, что делаю это неправильно, потому что, когда я добавляю +2, который должен быть константой C, работает не так, как я хочу, он просто переводит больше и рисует полярную розу без смещения. Как предотвратить "лишний перевод" и правильно его нарисовать?