2d空间的旋转点出错

时间:2015-11-04 07:17:03

标签: java rotation geometry 2d

当在2D空间中绕另一个点旋转一个点时,旋转的点比原始点更远离旋转中心。

我基本上使用的是Nil的答案: Rotating a point about another point (2D)

public static Point2D.Double rotate_point(double cx, double cy, double angle, Point2D.Double p) {
    double rad = Math.toRadians(angle);

    double s = Math.sin(rad);
    double c = Math.cos(rad);

    // translate point back to origin:
    p.x -= cx;
    p.y -= cy;

    // rotate point
    double xnew = p.x * c - p.y * s;
    double ynew = p.x * s + p.y * c;

    // translate point back:
    p.x = xnew + cx;
    p.y = ynew + cy;
    return p;
}

旋转(-1594,6290)左右(-1759,6963)给出(-1086.0 7128.0)。

我用http://www.shodor.org/interactivate/activities/SimplePlot/

绘制了它
-1759,6963
-1594,6290
-1086.0 7128.0

这显然是错的,但我不明白为什么。

在原点周围旋转(2,0)返回(0,2)就好了。

与(2,1)在(0,1)=>周围相同(0,3)

0 个答案:

没有答案