常用3D变换矩阵

这几年没碰3D有些手生了,不过以前也主要是用Ogre和Direct3D,都带了矩阵操作的函数和类,不需要管一些矩阵的定义,虽然最初学图形学的时候都学过这些推导过程,但是现在不看书还真难正确的写出所有这些矩阵的定义了。整理一下,常用的3D变换矩阵

平移矩阵
[
\mathbf{M}{translate} = \begin{bmatrix}
1 & 0 & 0 & tx \
0 & 1 & 0 & ty \
0 & 0 & 1 & tz \
0 & 0 & 0 & 1
\end{bmatrix}
]
缩放矩阵
[
\mathbf{M}
{scale} = \begin{bmatrix}
sx & 0 & 0 & 0 \
0 & sy & 0 & 0 \
0 & 0 & sz & 0 \
0 & 0 & 0 & 1
\end{bmatrix}
]

四元数对应的旋转矩阵
假设四元数 ( q = (s, \vec{v}) ),其中
[ s = \cos\left(\frac{\theta}{2}\right), \vec{v} = \vec{u} \sin \left(\frac{\theta}{2}\right) ]
这里 ( \vec{u} ) 是旋转轴的方向向量,那么这个四元数对应的旋转矩阵为:
[
\mathbf{M}_{R\left( \theta \right)} = \begin{bmatrix}
u_x^2 \left( 1 – cos\theta \right) + cos\theta & u_x u_y\left(1 – cos\theta\right) – u_z sin\theta & u_x u_z \left( 1 – cos\theta \right) + u_y sin\theta \
u_y u_x \left( 1 – cos\theta \right) + u_z sin\theta & u_y^2\left(1 – cos\theta\right) + cos\theta & u_y u_z \left( 1 – cos\theta \right) – u_x sin\theta \
u_z u_x \left( 1 – cos\theta \right) – u_y sin\theta & u_z u_y\left(1 – cos\theta\right) + u_x sin\theta & u_z^2 \left( 1 – cos\theta \right) + cos\theta \
\end{bmatrix}
]

UVN 相机变换矩阵
(\mathbf{T}) 是相机位置
(\vec{n}) 是方向向量,由相机位置指向目标位置,必须被归一化后才能使用。
(\vec{v}) 是上向量
(\vec{u}) 是右向量,其中: (\vec{u} = \vec{v} \times \vec{n})
对应的矩阵定义为:
[
\mathbf{M}{WC,VC} = \begin{bmatrix}
u_{x} & u_{y} & u
{z} & -\vec{u} \cdot \mathbf{T} \
v_{x} & v_{y} & v_{z} & – \vec{v} \cdot \mathbf{T}\
n_{x} & n_{y} & n_{z} & – \vec{n} \cdot \mathbf{T} \
0 & 0 & 0 & 1
\end{bmatrix}
]

正交投影矩阵

[
\mathbf{M}_{ortho,norm} = \begin{bmatrix}
\frac{2}{xw_{max} – xw_{min}} & 0 & 0 & – \frac{xw_{max} + xw_{min}}{xw_{max} – xw_{min}} \
0 & \frac{2}{yw_{max} – yw_{min}} & 0 & – \frac{yw_{max} + yw_{min}}{yw_{max} – yw_{min}} \
0 & 0 & \frac{-2}{z_{near} – z_{far}} & \frac{z_{near} + z_{far}}{z_{near} – z_{far}} \
0 & 0 & 0 & 1
\end{bmatrix}
]

透视投影矩阵

[
\mathbf{M}{normpers} = \begin{bmatrix}
\frac{-2z_{near}}{xw_{max} – xw_{min}} & 0 & \frac{xw_{max} + xw_{min}}{xw_{max} – xw
{min}} & 0 \
0 & \frac{-2z_{near}}{yw_{max} – yw_{min}} & \frac{yw_{max} + yw_{min}}{yw_{max} – yw_{min}} & 0 \
0 & 0 & \frac{z_{near} + z_{far}}{z_{near} – z{far}} & -\frac{2z_{near}z_{far}}{z_{near} – z_{far}} \
0 & 0 & -1 & 0
\end{bmatrix}
]

透视投影矩阵 – 对称视锥体形式
[
\mathbf{M}_{normsymmpers} = \begin{bmatrix}
\frac{\cot \left( \frac{\theta}{2} \right)}{aspect} & 0 & 0 & 0 \
0 & \cot \left( \frac{\theta}{2} \right) & 0 & 0 \
0 & 0 & \frac{z_{near} + z_{far}}{z_{near} – z_{far}} & -\frac{2z_{near}z_{far}}{z_{near} – z_{far}} \
0 & 0 & -1 & 0
\end{bmatrix}
]

原文转自这里,公式无法正确显示请点击链接

[latex][latex]


Last modified on 2013-04-30