Polar Rose 2D偏移

时间:2015-04-12 05:04:24

标签: c++ 2d polar-coordinates parametric-equations

我在试图用方程的偏移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 * theta)

我想画的极地玫瑰的等式是:
r(θ)= 2 + sin(6 *θ)

好的,参数方程将是:
x = C + sin(k * theta)* cos(theta)
y = C + sin(k * theta)* sin(theta)

在我的画布(绘图区域)中,我的原点不在屏幕的中心,所以我需要将玫瑰翻译成它。好的,没什么大不了的。另一点是我需要缩放玫瑰以使其可见或者它太小,但仍然没有问题,这解释了:100 *。这是我的代码,它是在C ++ btw:

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 个答案:

答案 0 :(得分: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)