我无法理解从对象空间转换到视图空间的数学。我在硬件中这样做,我有下面的Atranspose矩阵:
ATranspose =
[rightx upx lookx 0]
[righty upy looky 0]
[rightz upz lookz 0]
[-eyeright -eyeup -eyelook 1]
然后找到我们要做的观点:
[x,y,z,1] = [x',y',z',1]*ATranspose
xnew = xold*rightx + xold*righty + xold*rightz + xold*(-eyeright)
但我不确定这是否正确。
也可能是
[x,y,z,1]=atranspose*[x',y',z',1]T
有人可以向我解释一下吗?我在网上找不到任何关于它的东西,这不是直接与opengl代码相关的我只想了解从对象坐标到眼睛坐标转换点背后的数学。
答案 0 :(得分:13)
答案 1 :(得分:1)
如果您在第二种变体中转置ATranspose,即
[x,y,z,w]^T = ATranspose^T * [x',y',z',w']^T
BTW,^T
意味着转置所以原作者可能意味着
[x,y,z,w] = [x',y',z',w'] * A^T
并重写
[x,y,z,w]^T = A^T * [x',y',z',w']^T
然后所有这些配方都同样正确。