我希望这是问这个问题的正确位置same as this one,但是表达为纯数学而不是图形化(至少我希望我将问题正确地翻译成数学)。
考虑到:
问题:Y1和Up之间的角度值是多少?
正如数学家们一致认为的那样,这是一个非常基本的问题,但是我已经摸不着头脑了至少两个星期而没有能够想象出如何将Y投射到P上......可能现在已经太老了,无法找到解决方案学校练习。
我正在寻找三角解决方案,而不是使用矩阵的解决方案。感谢。
编辑:我发现我需要确定相对于必须为Look的旋转轴的角度符号。我在我的链接问题上发布了最终代码(参见上面的链接)。感谢那些帮助过的人。我很感激你的时间。
答案 0 :(得分:2)
我只是在纸上做这件事。我希望这是对的。
让我们假设Up和Look是标准化的,即长度1.假设平面P包含原点,L是它的法线。 Y是(0,1,0)
要将Y投影到P上,找到它到P的距离...
d = Y dot L = ly
...然后用-d缩放法线以获得Y1(即,在P上投影Y)
Y1 = (lx * ly, ly * ly, lz * ly)
现在将Y1标准化,即将其缩放(1 /长度)。如果它的长度为0那么你运气不好。
Y1和Up的点积=角度的余弦。所以
angle = acos(Y1 dot Up)
答案 1 :(得分:1)
我认为Up和Look是单位向量。设Y =(0,1,0)。
我们找到Y1。
Y1 = Y - (Y *看)*看 Y1 = Y - ly *看 Y1 =(-ly lx,1 - ly ly,-ly * lz)
请注意,当Look为(0,1,0)或(0,-1,0)时,Y1将为(0,0,0)。
像Detmar所说,通过归一化Y1找到Y1和Up之间的角度并找到Y1 * Up的弧(其中*是点积)
答案 2 :(得分:0)
您需要了解3D空间中的矢量。我认为对这些产品的基本了解,特别是点和交叉产品,将会让你感到厌烦。寻找一个基本的矢量教科书。
两个正交的向量:向上 (ux,uy,uz)和Look(lx,ly,lz)
正交向量的零点积。
垂直于的平面P. 看(因此包括Up)
如果你使用Look into Up的叉积,你将获得第三个向量,它与Up一起定义垂直于Look的平面。
Y1是Y的投影 (纵轴)沿着P
我不知道你在这里得到了什么,但是任何带有Look的矢量的点积都会在Look方向上给出它的组件大小。
答案 3 :(得分:0)
使用矢量数学这是一个相对简单的问题。使用equation for vector projection获取Y1,然后使用trigonometric equation for the dot product获取Y1和Up之间的角度。
这个方程式很容易用几乎任何语言实现,但如果你问这类问题,你可能打算做更多的重载矢量数学,在这种情况下我建议尝试找到第三方图书馆。
答案 4 :(得分:0)
如果Y =(0,1,0)那么
Y1 =(-ly lx,1 - ly ly,-ly * lz)
| Y1 | = sqrt(Y1x ^ 2 + Y1y ^ 2 + Y1z ^ 2)
|向上| = sqrt(Upx ^ 2 + Upy ^ 2 + Upz ^ 2)
银行角度=(Y1x Upx + Y1y Upy + Y1z Upz)/(| Y1 | | Up |)