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

前文中提到的模型变换(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值