c++ - 3D vector (X、Y、Z)查看 vector

标签 c++ vector entity rotation angle

我正在使用源 sdk(使用 c++),并且我想旋转实体的角度,以便它查看另一个实体。

实体可以被视为游戏对象或类似对象,并且在世界中具有位置( vector )以及角度( vector )。

我可以使用 SetAbsAngles 来旋转实体,它采用 QAngle(基本上是 vector )作为参数。

Explanation of what I want and have

最佳答案

这是一些伪代码:

vec3 p = entity2->getPosition();
vec3 r = entity1->getPosition();
float xdistance = p[0] - r[0];
float ydistance = p[1] - r[1];
float zdistance = p[2] - r[2];
float xzdistance = sqrt(xdistance * xdistance + zdistance * zdistance);
entitity1->setHeading(atan2(xdistance, zdistance)); // rotation around y
entitity1->setPitch(-atan2(ydistance, xzdistance)); // rotation around x
entitity1->setBank(0); // rotation around z

z 旋转设置为 0,因为无法确定。如果您愿意,可以自由设置。

这在 z 朝前、y 朝上、x 朝右的坐标系中工作。如果您使用不同的系统,您可能需要调整一些标志。

关于c++ - 3D vector (X、Y、Z)查看 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8208789/

相关文章:

c++ - 程序关闭时防止用户编辑文本文件

php - 以 DDD 方式与实体相关的外部第三方 API

android - Json 可能在 setEntity 附近不使用 HttpPost

c++ - 如何在 C++ 中对 vector 组元素进行排序?

c++ - 错误与否?带有 std::string 的 Visual Studio 2013 预览 std::vector 初始值设定项列表

java - 在 Java 中从字符串创建大小图像

c++ - 运算符重载 (C++)

c++ - 在 OpenCL 上读取错误数据

c++ - 如何从 linux 库文件中恢复 cpp 数据?

r - 高于给定阈值的向量值的快速求和