D3D12学习笔记3.3——仿射变换

·仿射变换是由一个线性变换与一个平移变换组合而成。对于向量来说平移操作是没有意义的,而平移变换只能应用于点。

·齐次坐标表示,是将原先的三元组扩展成四元组,第四个坐标w的取值将根据被描述对象是点还是向量而定。

具体如下:

w=0是向量,w=1是点。


·说完两个基本概念后,我们来说说仿射变换的具体公式:a(u)=\iota (u)+b

同时矩阵表示法:

a(u)=uA+b=[x,y,z]\begin{bmatrix} A_{11} & A_{12} &A_{13} \\ A_{21} & A_{22} &A_{23} \\ A_{31}& A_{32} & A_{33} \end{bmatrix}+\begin{bmatrix} b_x & b_y &b_z \end{bmatrix}=\begin{bmatrix} x^{'} & y^{'} & z^{'} \end{bmatrix}

其中A是一个线性变换的矩阵表示。

如果用w=1把坐标扩充为齐次坐标,那么就可以简洁地写作:

\begin{bmatrix} x & y &z &1 \end{bmatrix}\begin{bmatrix} A_{11} & A_{12} &A_{13}&0 \\ A_{21} & A_{22} &A_{23} &0\\ A_{31}& A_{32} & A_{33}&0\\b_x&b_y&b_z&1 \end{bmatrix}=\begin{bmatrix} x^{'} & y^{'} & z^{'}&1 \end{bmatrix}

这样4 x 4矩阵称为仿射变换的矩阵表示。


下面来说说平移的一些细节:

·恒等变换是一种直接返回其输入参数的线性变换,I(u)=u。其实就是单位矩阵的线性变换矩阵。

·平移变换定义为仿射变换,其中线性变换就是一种恒等变换,即\iota (u)=uI+b=u+b

·矩阵表示其实很简单:

T=\begin{bmatrix} 1 & 0 &0&0 \\ 0 & 1 &0 &0\\ 0& 0 & 1&0\\b_x&b_y&b_z&1 \end{bmatrix}

这就是平移矩阵,其逆矩阵也很简单:

T=\begin{bmatrix} 1 & 0 &0&0 \\ 0 & 1 &0 &0\\ 0& 0 & 1&0\\-b_x&-b_y&-b_z&1 \end{bmatrix}

·最后我们来讲之前一节讲的缩放、旋转矩阵代入到仿射矩阵中:

S=\begin{bmatrix} S_x & 0 &0&0 \\ 0 & S_y &0 &0\\ 0& 0 & S_z&0\\0&0&0&1 \end{bmatrix},R_{n}=\begin{bmatrix} c+(1-c)x^2) & (1-c)xy+sz & (1-c)xz-sy&0\\ (1-c)xy-sz & c+(1-c)y^2) & (1-c)yz+sx&0\\ (1-c)xz+sy& (1-c)yz-sx& c+(1-c)z^2) &0\\0&0&0&1\end{bmatrix}

这样就能用4 x 4 矩阵统一的表示所有变换,并通过1 x 4齐次行向量来表示点和向量了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言行物恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值