math - 给定三角形顶点的坐标,求 3D 三角形面的法线角

标签 math 3d geometry trigonometry

正如您可以从 this screenshot 看出的那样,我正在尝试为我正在开发的平台游戏制作一个物理引擎,但我遇到了一个明确的问题:我需要能够找出您可以看到的构成此网格的任何一个三角形的角度,这样我就可以计算出玩家在该三角形上的旋转以及角加速度。

screenshot

我可以使用我创建的算法来查找玩家接触的任何三角形的所有 3 个点的位置,但我不知道如何使用这些点来计算三角形的旋转。

我所说的旋转是指法线远离脸部中心的方向,即人站在该表面上时倾斜的角度。有人能想出一系列方程来解决这个问题吗?

最佳答案

如果计算两个向量的叉积:

p1 - p0

p2 - p0

其中 p0p1p2 是三角形的三个顶点,您将得到法线。如果三角形的顶点相对于其外部法线顺时针排列,则认为三角形指向您。这称为左手定则。想象一下握住你的左手,手指从 p0 curl 到 p1,你的拇指朝面部法线方向伸出:

face pointing away from camera face pointing towards camera

关于math - 给定三角形顶点的坐标,求 3D 三角形面的法线角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516296/

相关文章:

c++ - 编译时 std::ratio 的 std::ratio 功率?

python - numpy : Finding the tranformation matrix given 2 sets of 4 points in 3D euclidian coordinates

javascript - 计算数组每个时间帧的平均值最大值

c - 在 C 中将整数数组添加为整数

math - 计算两个相同数据集之间的汉明距离

iphone - iPhone上角色动画的常见做法?

swift - ARKit – 3D 对象不是静态的

ios - 在3D世界ARKit中创建UIBezierPath形状

algorithm - 找到多少点可以到达?

algorithm - 当分离轴定理 (SAT) 的叉积为零时该怎么办