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