围绕旋转点放置对象

Placing Object Around a Rotating point

本文关键字:对象 旋转      更新时间:2023-10-16

我有两个对象,object1object2object1围绕其中心旋转,object2将围绕其中心定位。问题是让object2的定位正确;这不是100%准确的。

下面是我的代码:
angle = atan2(
    cEnemy->position.y - (float) position.y,
    cEnemy->position.x - (float) position.x) / 3.14159265f * 180);

position.xposition.y代表object1的位置

这是object1用来旋转的角度。现在我被困在如何去定位object2

我假设我需要首先得到object1的中心点,它等于:

object2.x = (position.x + widthOfObject1 / 2);
object2.y = (position.y + heightOfObject1 / 2);

但是我只是不确定object1将面临的角度,以及如何使用它来正确定位object2。我很确定我必须在这里使用sincos,但我不确定。我的想法是定位object2,这样不管它在什么角度,object2也将在object1前面有一个小的边缘。

任何帮助将不胜感激!

似乎你想做的是object2与位置 p 保持固定距离D并且你想围绕p旋转 a

所以沿着 a 的单位向量是[ cos(A) , sin(A) ] 所以沿着 a 的矢量,大小为D[ D cos(A) , D sin(A) ] 所以对象2的位置应该是
object2.x = object1.x + D * cos(A)
object2.y = object1.y + D * sin(A)