Vir*_*dia 12 javascript arrays geometry formula
在JavaScript中将圆的坐标添加到数组的最佳方法是什么?到目前为止,我只能做半圈,但我需要一个公式,将整个圆圈返回到两个不同的数组:xValues
和yValues
.(我正在尝试获取坐标,以便我可以沿路径设置对象的动画.)
这是我到目前为止所拥有的:
circle: function(radius, steps, centerX, centerY){
var xValues = [centerX];
var yValues = [centerY];
for (var i = 1; i < steps; i++) {
xValues[i] = (centerX + radius * Math.cos(Math.PI * i / steps-Math.PI/2));
yValues[i] = (centerY + radius * Math.sin(Math.PI * i / steps-Math.PI/2));
}
}
Run Code Online (Sandbox Code Playgroud)
Ate*_*ral 22
你的循环应该像这样设置:
for (var i = 0; i < steps; i++) {
xValues[i] = (centerX + radius * Math.cos(2 * Math.PI * i / steps));
yValues[i] = (centerY + radius * Math.sin(2 * Math.PI * i / steps));
}
Run Code Online (Sandbox Code Playgroud)
var xValues = [centerX]; var yValues = [centerY];
- 圆圈的中心不是它的一部分.Bresenham的算法更快.你听说它与绘制直线有关,但是有一种圆形算法的形式.
无论你是使用它还是继续进行三角计算(这些天都非常快) - 你只需要绘制圆的1/8.通过交换x,y你可以得到另一个1/8,然后是x,y和两者的负数 - 交换和未交换 - 为你提供所有其余圆圈的分数.加速8倍!
更改:
Math.PI * i / steps
Run Code Online (Sandbox Code Playgroud)
至:
2*Math.PI * i / steps
Run Code Online (Sandbox Code Playgroud)
一个完整的圆是2pi弧度,你只需要pi弧度.