使用Java旋转关于原点的点

时间:2015-10-28 00:21:37

标签: java java-2d

在我学校的数学俱乐部,我们正在解决涉及围绕圆圈均匀分布的点的问题。我决定使用电脑协助我们解决这个问题。在这里,我有两种方法来帮助创建点。

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只是我用来管理点数和绘制点数的类。

这会旋转点,并以圆形方式旋转它们,但点之间的间距显然不准确。

我哪里错了?我已经查看了几个小时的代码,似乎无法找到问题。感谢。

0 个答案:

没有答案