(Java - LibGDX) 如何将一个向量旋转到另一个向量周围的特定旋转
(Java - LibGDX) How to rotate a vector to a certain rotation around another vector
我有一个矢量,比如说,ship
,我需要将它的每一帧设置为围绕另一个叫做 center
的矢量旋转。这是一张图片来说明我的意思。
如您所见,我希望能够将 ship
旋转到围绕 center
的任何旋转,最好是在具有 2 个 Vector2
参数的函数中用于位置和然后 float
用于旋转(以度为单位)。
一个点绕另一个点旋转的数学函数是:
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);
如果你的中心不在 (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;
注意,你的角度应该以弧度而不是度为单位,一个简单的转换是这样的:
double angle = Math.toRadians(degrees);
希望对您有所帮助!
我有一个矢量,比如说,ship
,我需要将它的每一帧设置为围绕另一个叫做 center
的矢量旋转。这是一张图片来说明我的意思。
如您所见,我希望能够将 ship
旋转到围绕 center
的任何旋转,最好是在具有 2 个 Vector2
参数的函数中用于位置和然后 float
用于旋转(以度为单位)。
一个点绕另一个点旋转的数学函数是:
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);
如果你的中心不在 (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;
注意,你的角度应该以弧度而不是度为单位,一个简单的转换是这样的:
double angle = Math.toRadians(degrees);
希望对您有所帮助!