选择要旋转的一侧
Choosing which side to rotate
我正在实现一种瞄准最近敌人的归航子弹。
我可以通过做点积来计算玩家的前向矢量和从玩家到目标的矢量之间的角度。如果我把结果放在acos()中,它会以弧度的形式给出两个向量之间的角度。
现在,我希望我的物体在飞行时旋转并面向敌人。但问题来了,我怎么知道该旋转到哪一边?我知道两个向量之间的角度,但我的点乘值并不能告诉我目标是在玩家的左侧还是右侧。
我想知道我是否要走更长的路线,我可能不知道有什么更容易的方法来确定我需要旋转多少以及旋转到哪一边才能面对目标。
您可以计算边向量的点积,如下所示:
vector Side( Front.Y, -Front.X );
float dotSide = dot( Target, Side );
if( dotSide <= 0 )
{
// one side
}
else
{
// another side
}
如果我理解得对,你想知道你的宇宙飞船vecS
应该旋转的方向,以便看到目标vecT
。
我建议计算vecS
和x轴所围成的角度alpha
,以及vecT
和x轴围成的角beta
。如果alpha
大于beta
,则向右旋转,否则向左旋转。
以下是计算角度和正确旋转方向的伪代码:
// Pseudocode:
alpha = arctan( vecS.y / vecS.x );
beta = arctan ( vecT.y / vecS.x );
if(alpha > beta)
// Rotate right by alpha - beta
else
// Rotate left by alpha - beta
相关文章:
- 如何使用默认参数等选择模板专业化
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 与互斥锁相比,旋转锁可以保证上下文切换
- 选择要调用的构造函数
- C++选择排序算法中的逻辑错误
- QTreeView幻灯片多选后无法使用单击选择
- 无法获取菜单选择以运行函数.C++
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 绘制旋转的三角形
- 在C++中,如何通过几种类型从元组中选择多个元素
- 旋转模型矩阵时的形状失真
- 四边形的 2D 旋转
- 讨论 - 创建矩阵时的数组与向量的向量 - 什么是最实用的选择
- 对可变参数使用声明.如何选择正确的功能
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 选择选举获胜者的程序
- 发布旋转矩阵(openGL/glm)
- 如何选择在 csv 文件中输出的位置
- 如何允许用户选择何时停止三列中的每一列的旋转
- 选择要旋转的一侧