帆布螺旋上升效果与转折点

时间:2017-12-05 08:19:16

标签: javascript algorithm math spiral

螺旋上升效应如下所示:

spiral rise effect

可以在此处找到演示:http://openlayers.org/en/latest/examples/dynamic-data.html

在演示页面的底部,使用算法来实现此效果。但我无法弄清楚它是如何运作的。

var t = theta + 2 * Math.PI * i / n;
var x = (R + r) * Math.cos(t) + p * Math.cos((R + r) * t / r);
var y = (R + r) * Math.sin(t) + p * Math.sin((R + r) * t / r);

R,r和p是什么意思?以及如何理解上面的公式?有人能为我解释一下细节吗?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

我可以识别代码绘制epicycloid curve(+它的阶段theta永久更改以提供移动效果。)

您可以将 R 称为内部(此处更大)圆的半径, p r (此处值相等)作为半径外(这里是较小的)圆。这里 r 看起来像环形弹簧的线圈半径。

第一个加数对应于外圆的中心,第二个加数对应于外圆中心的二阶旋转。

使用这些值并观察效果

请注意,如果您更改 p 使其不等于 r ,您将获得epitrochoid曲线(更常见的一种外摆线)