我正在为程序编写代码,该程序在圆的圆周上的点之间绘制线。我使用以下方程式沿圆周设置点:
x = center + r * cos(angle)
y = center + r * sin(angle)
但是由于某种原因,我的观点无法沿着圆周平均分布。我不知道为什么。
最终看起来像这样:
public void setPoints(){
double circumference = d*Math.PI;
int x;
int y;
int nPoints = 10; //this is a variable determined by the user
int space = (int) (circumference/nPoints);
int start=0;
System.out.println("space: " + space);
int r = 20;
int a = 506;
int b = 356;
int centerX = a;
int centerY = b;
int counter = 0;
while (counter <= nPoints) {
x = (int) (centerX + r * Math.cos(start));
y = (int) (centerY + r * Math.sin(start));
pointArray.add(new Point(x, y));
System.out.println("---"+counter+"---");
start += space;
counter++;
}
}
我究竟做错了什么?
最佳答案
更换:
int space = (int) (circumference/nPoints);
int start = 0;
带有:
double space = (2 * Math.PI) / nPoints;
double start = 0;
应该做到的。为了清楚起见,您应该将
space
重命名为angle
或其他名称。2 * Math.PI
是一个完整的角度,以弧度表示。 (2 * Math.PI) / nPoints
是您需要在两点之间应用的角度。