当前位置:  开发笔记 > 编程语言 > 正文

圆坐标到Javascript中的数组

如何解决《圆坐标到Javascript中的数组》经验,为你挑选了3个好方法。

在JavaScript中将圆的坐标添加到数组的最佳方法是什么?到目前为止,我只能做半圈,但我需要一个公式,将整个圆圈返回到两个不同的数组:xValuesyValues.(我正在尝试获取坐标,以便我可以沿路径设置对象的动画.)

这是我到目前为止所拥有的:

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));
   }
}

Ates Goral.. 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));
}

从0开始循环

逐步完成整个2*PI范围,而不仅仅是PI.

你不应该var xValues = [centerX]; var yValues = [centerY];- 圆圈的中心不是它的一部分.

另外,我首先将相位计算存储在局部变量中:`var phase = 2*Math.PI*i/steps;` (3认同)


DarenW.. 7

Bresenham的算法更快.你听说它与绘制直线有关,但是有一种圆形算法的形式.

无论你是使用它还是继续进行三角计算(这些天都非常快) - 你只需要绘制圆的1/8.通过交换x,y你可以得到另一个1/8,然后是x,y和两者的负数 - 交换和未交换 - 为你提供所有其余圆圈的分数.加速8倍!



1> Ates Goral..:

你的循环应该像这样设置:

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));
}

从0开始循环

逐步完成整个2*PI范围,而不仅仅是PI.

你不应该var xValues = [centerX]; var yValues = [centerY];- 圆圈的中心不是它的一部分.


另外,我首先将相位计算存储在局部变量中:`var phase = 2*Math.PI*i/steps;`

2> DarenW..:

Bresenham的算法更快.你听说它与绘制直线有关,但是有一种圆形算法的形式.

无论你是使用它还是继续进行三角计算(这些天都非常快) - 你只需要绘制圆的1/8.通过交换x,y你可以得到另一个1/8,然后是x,y和两者的负数 - 交换和未交换 - 为你提供所有其余圆圈的分数.加速8倍!



3> Greg Hewgill..:

更改:

Math.PI * i / steps

至:

2*Math.PI * i / steps

一个完整的圆是2pi弧度,你只需要pi弧度.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有