2015-04-12 12 views
0

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

полярное уравнение может быть:
г (тета) = совы (к * тете)
или
г (тета) = Sin (к * тете)
Polar Rose 2D offset

Уравнение полярного г ОСЭ Хочу сделать это:
г (тета) = 2 + Sin (6 * тета)

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

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

ответ

1

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) соответственно.

+0

Большое вам спасибо! : D Извините, но у меня недостаточно репутации, чтобы проголосовать за ваш ответ, есть ли способ сказать «правильный ответ»? –