(Java - LibGDX)如何将向量旋转到另一个向量周围的某个旋转

Zac*_*c G 2 java math vector rotation

我有一个名为的矢量,ship我需要将每个帧设置为围绕另一个矢量调用的某个旋转center.这是一张显示我的意思的图片. 在此输入图像描述

正如您所看到的,我希望能够旋转ship到任何旋转周围center,最好是在具有2个Vector2位置参数的函数中,然后float旋转(以度为单位).

Did*_*rys 5

围绕另一点旋转点的数学函数是:

double new_x = current_x * Math.cos(angle) - current_y * Math.sin(angle);
double new_y = current_x * Math.sin(angle) + current_y * Math.cos(angle);
Run Code Online (Sandbox Code Playgroud)

如果你的中心不在(0,0),你应该先用当前值减去它,然后在最后再添加它们,如下所示:

double new_x = (current_x-center_x) * Math.cos(angle) - (current_y-center_y) * Math.sin(angle) + center_x;
double new_y = (current_x-center_x) * Math.sin(angle) + (current_y-center_y) * Math.cos(angle) + center_y;
Run Code Online (Sandbox Code Playgroud)

请注意,您的角度应该是弧度而不是度数,这样的简单转换就像这样:

double angle = Math.toRadians(degrees);
Run Code Online (Sandbox Code Playgroud)

希望这有帮助!