如何围绕另一个点旋转一个点

7
我正在编写一个游戏。我需要知道如何围绕给定角度,将点a绕点b旋转。我在java中编写这个功能,并且它将成为我的类Point的一部分。

1
正弦和余弦可能有所帮助:http://zh.wikipedia.org/wiki/旋转矩阵 - Niklas B.
1
这就是旋转矩阵所做的事情... - Randy
请查看 http://www.willamette.edu/~gorr/classes/GeneralGraphics/Transforms/transforms2d.htm。变换矩阵是你在这里需要的工具;你可以封装旋转、平移、缩放等操作。 - Jason C
您可以查看此示例 - MadProgrammer
1个回答

18
double x1 = point.x - center.x;
double y1 = point.y - center.y;

double x2 = x1 * Math.cos(angle) - y1 * Math.sin(angle));
double y2 = x1 * Math.sin(angle) + y1 * Math.cos(angle));

point.x = x2 + center.x;
point.y = y2 + center.y;

这种方法使用旋转矩阵。 "point" 是您的点 a,"center" 是您的点 b。


变量angle应该是以弧度还是角度为单位? - user2277362
2
@user2277362 为什么不查一下 - Niklas B.
1
Math.sin和其他三角函数使用弧度。Math类还有toDegrees()和toRadians()函数。 - SDLeffler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接