基本变换矩阵

点p = (p_{x}, p_{y},p_{z})

1 平移变换

  • 平移矩阵 T

T(t) = T(t_{x}, t_{y}, t_{z}) = \begin{bmatrix} 1&0 &0 &t_{x} \\ 0&1 &0 &t_{y} \\ 0&0 &1 &t_{z} \\ 0&0 &0 &1 \end{bmatrix}

  • 平移后的新点
    p^{'} = (p_{x} + t_{x},p_{y} + t_{y} ,p_{z} + t_{z})

2 旋转矩阵

  • 旋转矩阵用R_{x}(\phi)R_{y}(\phi)R_{z}(\phi) 分别表示

R_{x}(\phi) = \begin{bmatrix} 0&1 &0 &0 \\ 0&cos\phi &-sin\phi &0 \\ 0&sin\phi &cos\phi &0 \\ 0&0 &0 &1 \end{bmatrix}

R_{y}(\phi) = \begin{bmatrix} cos\phi&0 &sin\phi &0 \\ 0&1 &0 &0 \\ -sin\phi&0 &cos\phi &0 \\ 0&0 &0 &1 \end{bmatrix}

R_{z}(\phi) = \begin{bmatrix} cos\phi&-sin\phi &0 &0 \\ sin\phi&cos\phi &0 &0 \\ 0&0 &1 &0 \\ 0&0 &0 &1 \end{bmatrix}

  • 对一个绕任意轴旋转角度\phi3*3旋转矩阵R来说,其对角元素之和是一个与坐标轴无关的常数,称为迹(Trace)

R_{i}(\phi) = \begin{bmatrix} \color{red}{c_{1}} &… &… &0 \\ …& \color{red}{c_{2}} &… &0 \\ …&… & \color{red}{c_{3}} &0 \\ 0&0 &0 &\color{red}{1} \end{bmatrix}

tr(R) = 1 + 2cos\phi

  • 旋转矩阵为正交矩阵,因此矩阵R的逆矩阵就等于它的装置矩阵,此类变换的任意数量级联也同样成立。此外,R_{i}^{-1} = R_{i}(-\phi),也就是绕同一坐标轴相反方向旋转。

    绕一点旋转:某个物体绕z轴旋转\phi度,旋转中心是点p
    整个变换过程X可用下面的公式表示:

X = T(p)R_{z}(\phi)T(-p)

3 缩放变换

  • 缩放矩阵S(s) = S(s_{x}, s_{y}, s_{z})可以使物体分别绕x、y、z轴以因子s_{x}、s_{y}、s_{z}进行放大或缩小。

S(s) = \begin{bmatrix} 5&0 &0 &0 \\ 0&5 &0 &0 \\ 0&0 &5 &0 \\ 0&0 &0 &1 \end{bmatrix} = \begin{bmatrix} 1&0 &0 &0 \\ 0&1 &0 &0 \\ 0&0 &1 &0 \\ 0&0 &0 &1/5 \end{bmatrix}

  如果对缩放矩阵s的一个或三个分量置负,就会产生一个反射矩阵(Reflective Matrix),或者镜像矩阵(Mirror Matrix)。如果其中两个缩放因子是-1,那么将会旋转180^{\circ},反射矩阵将改变顶点序列,导致不正确的光照效果和裁剪。
  判定矩阵是否为反射形式,只需计算该矩阵的左上部3*3矩阵行列式的值,如果该值为负,那么该矩阵为反射矩阵。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容