我希望这是提出这个问题的正确位置,即 same as this one ,但表示为纯数学而不是图形(至少我希望我将问题正确地转换为数学)。
考虑:
问题:Y1 和 Up 之间的角度值是多少?
正如数学家会同意的那样,这是一个非常基本的问题,但我已经挠头至少两个星期了,但无法想象如何将 Y 投影到 P 上……也许现在太老了,无法找到学校练习的解决方案。
我正在寻找三角解决方案,而不是使用矩阵的解决方案。谢谢。
编辑 :我发现我需要确定角度的符号,相对于必须是 Look 的旋转轴。我在我的链接问题上发布了最终代码(见上面的链接)。感谢那些提供帮助的人。我很感激你的时间。
最佳答案
我只是在纸上做这件事。我希望是对的。
让我们假设 Up 和 Look 被归一化,即长度为 1。假设平面 P 包含原点,L 是它的法线。 Y 是 (0, 1, 0)
要将 Y 投影到 P 上,请找到它与 P 的距离...
d = Y dot L = ly
...然后按 -d 缩放法线以获得 Y1(即 Y 在 P 上的投影)
Y1 = (lx * ly, ly * ly, lz * ly)
现在对 Y1 进行归一化,即按 (1/长度) 对其进行缩放。如果它的长度为 0,那么你就不走运了。
Y1 和 Up 的点积 = 角度的余弦。所以
angle = acos(Y1 dot Up)
关于math - 3D 数学 : Calculate Bank (Roll) angle from Look and Up orthogonal vectors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3065070/