当前位置:   article > 正文

计算机图形学透视步骤,[计算机图形学03]仿射变换和透视变换

unity仿射变换图形矫正

前文中提到的模型变换(Model Transform)和观察变换(View Transform)都是由缩放变换(Sacle Transform),旋转变换(Rotation Transform)和平移变换(Translation Transform)这三种变换组合而成。其中缩放变换和旋转变换被称为线性变换(Linear Transform),线性变换和平移变换统称为仿射变换(Affine Transform)。

1.缩放变换,可以用一个3x3的矩阵描述

$$

M_{s} = \left[\begin{matrix}

Scale_x & 0 & 0 \\

0 & Scale_y & 0 \\

0 & 0 & Scale_z \\

\end{matrix}

\right]

$$

Unity3D中使用列向量来描述顶点信息,所以可以把顶点坐标右乘缩放矩阵完成缩放操作。

$$

\left[\begin{matrix}

Scale_x & 0 & 0 \\

0 & Scale_y & 0 \\

0 & 0 & Scale_z \\

\end{matrix}

\right]

\left[\begin{matrix}

x\\

y\\

z\\

\end{matrix}

\right] =

\left[\begin{matrix}

Scale_x x \\

Scale_y y \\

Scale_z z\\

\end{matrix}

\right]

$$

2.旋转变换,可以用一个3x3的矩阵描述(正方向是逆时针方向)

$$

M_{rx} =

\left[\begin{matrix}

1 & 0 & 0 \\

0 & cos\theta & -sin\theta \\

0 & sin\theta & cos\theta \\

\end{matrix}

\right]

M_{ry} =

\left[\begin{matrix}

cos\theta & 0 & -sin\theta \\

0 & 1 & 0 \\

0 & sin\theta & cos\theta \\

\end{matrix}

\right]

M_{rz} =

\left[\begin{matrix}

cos\theta & -sin\theta & 0 \\

sin\theta & cos\theta & 0 \\

0 & 0 & 1 \\

\end{matrix}

\right]

$$

3.平移变换,与缩放变换和旋转变换不同平移变换是一个加法操作。事实上,用右乘一个3x3矩阵的方法是无法实现平移操作的,因为平移操作不是一个线性操作,所以我们需要用到齐次坐标,把三维向量扩展成一个四维向量。

$$

M_{t} = \left[\begin{matrix}

1 & 0 & 0 & t_x \\

0 & 1 & 0 & t_y \\

0 & 0 & 1 & t_z \\

0 & 0 & 0 & 1 \\

\end{matrix}

\right]

$$

$$

\left[\begin{matrix}

1 & 0 & 0 & t_x \\

0 & 1 & 0 & t_y \\

0 & 0 & 1 & t_z \\

0 & 0 & 0 & 1 \\

\end{matrix}

\right]

\left[\begin{matrix}

x\\

y\\

z\\

w\\

\end{matrix}

\right] =

\left[\begin{matrix}

x + t_x \\

y + t_y\\

z + t_z\\

w

\end{matrix}

\right]

$$

4.仿射变换和投影变换的区别

bVbC3X9

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号