c++ - 围绕旋转点放置对象

标签 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 前面有一小段距离。

如有任何帮助,我们将不胜感激!

最佳答案

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

相关文章:

c++ - 关于在转换为父类(super class)时调用子类的重写方法

c++ - 关于通过 Get 和 Set 方法传递字符串

vba - 在 VBA Excel 中使用数学方程输入值进行数学计算

java - 封闭表达式,以 n 表示

html - CSS 定位。 4个div等分并放入1个父div

html - 当窗口太小时,文本消失

c++ - 如何将 Action 委托(delegate)给函数返回?

c++ - 使用 makefile 和 c++11 编译时出错

python - 找到大于数字的两个幂的最快方法

JavaScript/jQuery : detecting which of two elements is in front