我有两个对象,object1
和 object2
。 object1
围绕它的中心旋转,object2
将围绕它定位。问题是让 object2
的定位正确;它不是 100% 准确。
这是我的代码:
angle = atan2(
cEnemy->position.y - (float) position.y,
cEnemy->position.x - (float) position.x) / 3.14159265f * 180);
position.x
和 position.y
表示 object1
的位置。
那是我用来旋转 object1
的角度。现在我陷入了如何定位 object2
的困境。
我想我需要先得到 object1
的中心点,它等于:
object2.x = (position.x + widthOfObject1 / 2);
object2.y = (position.y + heightOfObject1 / 2);
但是我不确定如何处理 object1
将面对的角度,以及如何使用它来正确定位 object2
。我很确定我必须在这里使用 sin
或 cos
,但我不确定是不是。我的想法是定位 object2
,这样无论它处于什么角度,object2
都会在 object1
前面有一小段距离。
如有任何帮助,我们将不胜感激!
最佳答案
看起来你想要做的是 object2 与位置 P 的固定距离 D 并且你想将它围绕 P 旋转角度 A
所以沿 A 的单位 vector 是 [ cos(A) , sin(A) ]
所以沿着 A 的 vector D 是 [ D cos(A) , D sin(A) ]
所以物体2的位置应该是
object2.x = object1.x + D * cos(A)
object2.y = object1.y + D * sin(A)
关于c++ - 围绕旋转点放置对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8528085/