当在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)