我有一个名为ship
的向量,我需要将每个帧设置为围绕另一个名为center
的向量旋转。这是一张显示我的意思的图片。
正如您所看到的,我希望能够将ship
旋转到围绕center
的任何旋转,最好是在位置有2 Vector2
个参数的函数中,然后是旋转float
(以度为单位)。
答案 0 :(得分: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);
如果你的中心不在(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);
希望这有帮助!