math - 计算位置和旋转前面的 3D 点
问题描述
我目前正在做一个游戏项目,需要在当前玩家的视野前渲染一个点,游戏是用自定义 c++ 引擎编写的。我有当前位置 (x,y,z) 和当前旋转 (pitch,yaw,roll)。我需要将点沿已知角度向前延伸一定距离。
编辑:我用作解决方案的方法(有点偏离,但对我来说没关系)
Vec3 LocalPos = {0,0,0};
Vec3 CurrentLocalAngle = {0,0,0};
float len = 0.1f;
float pitch = CurrentLocalAngle.x * (M_PI / 180);
float yaw = CurrentLocalAngle.y * (M_PI / 180);
float sp = sinf(pitch);
float cp = cosf(pitch);
float sy = sinf(yaw);
float cy = cosf(yaw);
Vec3 dir = { cp * cy, cp * sy, -sp };
LocalPos = { LocalPos.x + dir.x * len, LocalPos.y + dir.y * len,LocalPos.z + dir.z * len };
解决方案
如果它是基于列的,您可以从矩阵第 3 列获取玩家的前向向量,然后将其法线乘以您想要的距离,然后将结果添加到玩家位置,您将获得所需的点。
推荐阅读
- powershell - 在 powershell 中检查启用/禁用的 PNP 设备
- plasticscm - 尝试推送更改时,出现错误“找不到指定的更改集 6”。这是什么意思以及如何解决?
- python - 在for循环python中切片字符串列表
- swift - 搜索功能在透明的 UITableView 中实现,但它不起作用。任何帮助表示赞赏
- c# - 使用集合的属性与表达式树中的其余属性进行比较
- php - 在产品页面中添加到购物车表单后显示预计发货日期
- php - 使用 php for-loop 将动态创建的输入字段中的数据插入数据库
- java - 使用递归在网格上回溯
- c++ - 从 QNetworkReply 读取后,Qt5 没有波兰字符
- swiftui - 在 SwiftUI 中有条件地更改滑块的缩略图