将矢量映射到平面上并获得它与其他平面交叉点之间的角度

时间:2015-06-16 11:01:41

标签: math vector geometry

我正在使用Unity3D游戏引擎和C#制作游戏。

在我的游戏中,我有两个3d矢量,A-B和C-D。我想确定角度E,但我不知道足够的几何和数学来弄清楚如何。 enter image description here

我想做的是...... 将矢量C-D投影到与A-B垂直的平面上。 然后测量该投影矢量与另一个矢量之间的平面上的角度,该矢量表示平面与另一个具有完全平坦方向的平面之间的交点。

在你的回答中,如果你把方程写成好像是代码(即这个变量乘以这个除以此等等),而不是我不知道的数学符号,我会很感激。

1 个答案:

答案 0 :(得分:1)

首先,我们在与cd平行的部分和正交部分中分解ab。通过减去平行部分,我们得到剩余的正交部分,它等于所需平面上的投影:

cdProj = cd - dot(ab, cd)/dot(ab, ab) * ab

然后由反正弦给出所需的角度:

e = asin(cdProj.y / length(cdProj))