螺旋上升效应如下所示:
可以在此处找到演示: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是什么意思?以及如何理解上面的公式?有人能为我解释一下细节吗?任何帮助表示赞赏。
答案 0 :(得分:2)
我可以识别代码绘制epicycloid curve(+它的阶段theta
永久更改以提供移动效果。)
您可以将 R 称为内部(此处更大)圆的半径, p 和 r (此处值相等)作为半径外(这里是较小的)圆。这里 r 看起来像环形弹簧的线圈半径。
第一个加数对应于外圆的中心,第二个加数对应于外圆中心的二阶旋转。
使用这些值并观察效果
请注意,如果您更改 p 使其不等于 r ,您将获得epitrochoid曲线(更常见的一种外摆线)