我有一个称为ship的矢量,我需要将每帧设置为围绕另一个称为center的矢量进行一定的旋转。这是一张图片,显示我的意思。
java - (Java-LibGDX)如何将 vector 旋转到围绕另一个 vector 的特定旋转-LMLPHP

如您所见,我希望能够将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);


希望这对您有所帮助!

10-04 21:56
查看更多