Php 通过描述缓和曲线的公式循环生成XY坐标

Php 通过描述缓和曲线的公式循环生成XY坐标,php,fibonacci,fractals,procedural-generation,Php,Fibonacci,Fractals,Procedural Generation,我试图以xy(2D)坐标的形式生成一个螺旋星系——但数学不是我的强项 我从一份关于螺旋的报告中收集了以下信息: 半径r(t)和角度t与 最简单的螺旋,阿基米德螺旋。因此,方程式为: (3) 极性方程:r(t)=at[a为常数]。 下面是 (2) 参数形式:x(t)=在cos(t)处,y(t)=在sin(t)处, (1) 中央的 方程:x²+y²=a²[弧tan(y/x)]² 有点涉及到星系的生成,但是反应是分散的,对于我所需要的仍然过于复杂(也就是说,我的数学头脑不能理解它们) 基本上,我需要做

我试图以xy(2D)坐标的形式生成一个螺旋星系——但数学不是我的强项

我从一份关于螺旋的报告中收集了以下信息:

半径r(t)和角度t与 最简单的螺旋,阿基米德螺旋。因此,方程式为:

(3) 极性方程:r(t)=at[a为常数]。
下面是
(2) 参数形式:x(t)=在cos(t)处,y(t)=在sin(t)处,
(1) 中央的 方程:x²+y²=a²[弧tan(y/x)]²

有点涉及到星系的生成,但是反应是分散的,对于我所需要的仍然过于复杂(也就是说,我的数学头脑不能理解它们)

基本上,我需要做的是在PHP中循环一个螺旋公式~5000次,以在513x513 XY网格上生成点。网格的大小和所需的点数将来可能会发生变化。更好的办法是,在螺旋的频率和它们偏离精确数学公式的距离上对这些点进行权衡,这与星系的实际外观类似

这篇数学论文讨论的是

我完全搞不懂的是如何将一个数学公式转换成我可以在PHP中循环的东西

//这里a是5
// a is 5 here
function x($t){ return 5 * $t * cos($t); }
function y($t){ return 5 * $t * sin($t); }

for ($t = 0; $t < 50; $t += 0.01) {
    $xyPoint = array(x($t), y($t));
    // draw it
}
函数x($t){返回5*$t*cos($t);} 函数y($t){返回5*$t*sin($t);} 对于($t=0;$t<50;$t+=0.01){ $xyPoint=数组(x($t),y($t)); //画出来 }
当遇到这样的参数方程时,参数变量通常为
t
,这意味着时间。因此,您可以考虑在函数中插入增加的t值,并获得随着时间推移而逐渐变化的坐标


您需要为a、t的范围和t的增量步长选择自己的值。这取决于你的要求。cos()和sin()的最大值均为1,如果这有助于您根据画布大小为a和t计算出合适的值

谢谢您的帮助,Chris。这正好回答了我关于循环通过参数方程的问题。我的下一个任务是调整公式,使其符合离散网格,我不确定这是否可行。假设螺旋居中,x(t)的最大值不能超过网格宽度的一半。因此,
a
的值需要