在圆的圆周上找到点的坐标

时间:2020-04-18 20:04:08

标签: javascript geometry coordinates

我要实现的是存储构成圆的圆周的所有点的坐标。我知道这实际上是不可能的,因为圆的圆周上有无限个点,但可以说我想存储圆的圆周上每隔1厘米找到的坐标。圆的周长是50cm,所以实际上我将在数组中存储25个值。

这是我到目前为止尝试过的:

for(var degree=0;degree<360;degree++){
    var radians = degree * Math.PI/180;
    var x = center + radius * Math.cos(radians);
    var y = center + radius * Math.sin(radians);
    //x & y are the coordinates of points on the circumference
} 

但是我上面的代码无法正常工作。帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

为此,您需要按适当的步长(而不是递增角度)来步入角度。因此,通过以下方式定义我们的圈子:
x0,y0-圆圈中心
r-半径
d-点的近似距离

现在我们可以利用圆周长了,

n = ceil (2.0*M_PI*r / d); // integer number of points (rounded up)
da = 2.0*M_PI/n;           // floating angular step between points
for (a=0.0,i=0;i;<n;i++,a+=da)
  {
  x = x0 + r*cos(a);
  y = y0 + r*sin(a);
  // here x,y is your point
  }

对不起,我没有用javascript编写代码,因此代码在C++中,所以只需更改语法以匹配您的语法即可。

但是,如果您要所有栅格化像素,则可以使用其他方法(Bresenham,midpoint等)来完成,有些方法甚至不需要+,-进行其他操作,请参见: