围绕旋转点放置对象

时间:2011-12-15 23:33:20

标签: c++ math positioning

我有两个对象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前面一小段距离。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

看起来你想要做的是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)