在我学校的数学俱乐部,我们正在解决涉及围绕圆圈均匀分布的点的问题。我决定使用电脑协助我们解决这个问题。在这里,我有两种方法来帮助创建点。
public Point2D pointRotater(Point2D point, double angle){
double oldX = point.getX(), oldY = point.getY();
double centerX = 750, centerY = 750;
double newX = centerX + (oldX - centerX)*Math.cos(angle) - (oldY - centerY)*Math.sin(angle);
double newY = centerY + (oldX - centerX)*Math.sin(angle) + (oldY - centerY)*Math.cos(angle);
Point2D rPoint = new Point2D.Double(newX, newY);
return rPoint;
}
public void pointGen(int vertices){
lm.clearPoints();
Point2D startP = new Point2D.Double(750, 100);
lm.addPoint(startP);
double angle = 360 / vertices;
for(int i = 1; i < vertices; i++){
lm.addPoint(pointRotater(startP, angle * i));
}
}
lm只是我用来管理点数和绘制点数的类。
这会旋转点,并以圆形方式旋转它们,但点之间的间距显然不准确。
我哪里错了?我已经查看了几个小时的代码,似乎无法找到问题。感谢。