我试图以xy(2D)坐标的形式生成螺旋星系 - 但数学不是我的强项。通过公式描述螺旋来产生XY坐标
我已经收集从上螺旋一个excellent source以下:
半径r(t)和角t为用于 simpliest螺旋,阿基米德螺线成比例的。因此,公式为:
(3)极坐标方程:r(t)= at [a是常数]。
从这如下
(2)参数的形式:X(t)=在cos(T),Y(T)=在SIN(t)的,
(1)中环 方程:X 2 + Y 2 =A²[ arc tan(y/x)] 2。
This question排序上眼星系产生,但反应是分散的,仍然是我所需要的(又名,我的数学哑的头脑无法理解它们)过于复杂。
本质上,我需要做的是循环PHP〜5000次的螺旋公式,以在513x513 XY网格上生成点。网格的大小和所需点数可能会在未来发生变化。更好的办法是将这些点权衡到螺旋的起源,频率和偏离精确数学公式的距离,类似于星系的实际外观。
这篇数学论文谈到了a formula that describes the structure of spiral galaxies。
完全失去我的是如何将一个数学公式转换成我可以在PHP中循环的东西!
感谢您的帮助,Chris。这恰好回答了我关于循环参数方程的问题。我的下一个任务是调整公式来坚持离散网格,我不知道这是可能的。 – Nick
假设你的螺旋居中,x(t)的最大值不能超过网格宽度的一半。所以,'a'的值需要<='gridWidth /(upperBoundOf $ t * 2)'。您为t选择的范围表示您绘制了多少个螺旋线。例如,如果t从0变为2PI,则形成一个循环。 0到50几乎是8个循环。这就是为什么t必须作为一个变量留下来,只有你可以选择一个合适的值(没有人,但你知道你想要多少个循环)。 for循环的步长由'rangeOf $ t/numDesiredPointsToDraw'决定 – goat