Tricks.of.the.3D.Game.Programming.Gurus 此本书中的从世界坐标系的各点到UVN模型的视图坐标系中的转换过程公式为:
Muvn = |ux vx nx 0|
| uy vy ny 0|
| uz vz nz 0|
| 0 0 0 1|
P2 = P1*Munv
其公式来的比较突兀,此处推导一下:
已知:基U(ux,uy,uz),V(vx,vy,vz),N(nx,ny,nz),他们是正交的即这三者组成的矩阵(UT,VT,NT)是一个正交矩阵
世界坐标系X(1,0,0), Y(0,1,0),Z(0,0,1)
根据从一个坐标系的基到另个坐标系的基的转化有此公式: B2 = B1*C(线性代数课本上都有此公式),
旧坐标基B1在转换矩阵C的作用下变成了新基B2
那么在B1下的坐标点X1在B2下的对应的新的坐标点X2,满足C*X2 = X1(线性代数课本上都有此公式).
对应到本问题上,B2就是UVN组成的正交矩阵(记为U),B1为世界坐标系W
U = W*C => C = U*W-1; C-1 = W*U-1, 而W是单位矩阵 ,所以C-1 = U-1
C*X2 = X1 => X2 = C-1*X1
X2 = U-1*X1
因为U是正交矩阵,有U-1 = UT => X2 = UT*X1
两边转置: X2T = X1T*U, 然后如果X2T,X1T是以齐次坐标分别表示为P2,P1,Munv是就是U的齐次形式
故有: P2 = P1*Muvn.