Полярная роза 2D смещение

У меня возникли проблемы при попытке построить полярную розу со смещением C уравнения
r (тета) = соз (к * тета) + с.
Я пытаюсь построить эту полярную розу:
http://en.wikipedia.org/wiki/Polar_coordinate_system#/media/File:Cartesian_to_polar.gif

Полярное уравнение может быть:
r (тета) = соз (к * тета)

или же

r (тета) = грех (к * тета)

Я хочу нарисовать уравнение полярной розы:
r (тета) = 2 + грех (6 * тета)

Хорошо, и параметрические уравнения будут:
х = С + грех (к * тета) * соз (тета)
у = с + грех (к * тета) * грех (тета)

В моем Canvas (область рисования) мое происхождение находится не в центре экрана, поэтому мне нужно перевести на него розу. ОК, ничего страшного. Другой момент заключается в том, что мне нужно масштабировать розу, чтобы она была видимой, иначе она будет слишком маленькой, но все равно проблем нет, это объясняет: 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, не работает так, как я хочу, это просто переводит больше и рисует полярную розу без смещения. Как мне предотвратить «лишний перевод» и правильно его нарисовать?

0

Решение

x = r cos(theta), y = r sin(theta) так что ваши параметрические уравнения должны быть x(theta) = C * cos(theta) + sin(k*theta) * cos(theta) а также y(theta) = C * sin(theta) + sin(k*theta) * sin(theta), Вы просто забыли умножить C от cos(theta) и по sin(theta) соответственно.

1

Другие решения


По вопросам рекламы [email protected]