Polar Rose 2D offset

Polar Rose 2D offset

本文关键字:offset 2D Rose Polar      更新时间:2023-10-16

我在绘制一个偏移量为C的极玫瑰时遇到了一些困难
r(θ)=cos(k*θ)+C。我正在画这朵极地玫瑰:
http://en.wikipedia.org/wiki/Polar_coordinate_system#/media/File:Cartesian_to_polar.gif

极性方程可以是:
r(θ)=cos(k*θ)

r(θ)=sin(k*theta)

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

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

在我的画布(绘图区域)中,我的原点不在屏幕的中心,所以我需要将玫瑰翻译成它。好吧,没什么大不了的。另一点是,我需要缩放玫瑰以使其可见,否则它会太小,但仍然没有问题,这解释了: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)