计算机图形学笔记 || 二维变换

一、图形几何变换基础

图形几何变换是对图形进行平移变换、比例变换、旋转变换、反射变换和错切变换。

齐次坐标:是用n+1维矢量表示n维矢量,在二维平面中,点p(x,y)的齐次坐标表示为(wx,wy,w)。

规范化齐次坐标:若w=1,点p的规范化齐次坐标为[x,y,1]。

引入齐次坐标的好处:为了使图形的几何变换表达为图形顶点集合矩阵与某一变换矩阵相乘的问题;变换具有统一表示形式的优点是便于变换合成和硬件实现。

矩阵相乘A\cdot B=\begin{bmatrix} a_{11}&a_{12}&a_{13}\\ a_{21}&a_{22}&a_{23}\\ ...&...&...\\ a_{n1}&a_{n2}&a_{n3} \end{bmatrix}\cdot \begin{bmatrix} b_{11}&b_{12}&b_{13}\\ b_{21}&b_{22}&b_{23}\\ b_{31}&b_{32}&b_{33} \end{bmatrix}

 

= \begin{bmatrix} a_{11}b_{11}+a_{12}b_{21}+a_{13}b_{31}&a_{11}b_{12}+a_{12}b_{22}+a_{13}b_{32}&a_{11}b_{13}+a_{12}b_{23}+a_{13}b_{33}\\ a_{21}b_{11}+a_{22}b_{21}+a_{23}b_{31}&a_{21}b_{12}+a_{22}b_{22}+a_{23}b_{32}&a_{21}b_{13}+a_{22}b_{23}+a_{23}b_{33}\\ ...&...&...\\ a_{n1}b_{11}+a_{n2}b_{21}+a_{n3}b_{31}&a_{n1}b_{12}+a_{n2}b_{22}+a_{n3}b_{32}&a_{n1}b_{13}+a_{n2}b_{23}+a_{n3}b_{33} \end{bmatrix}

图形变换的两种形式:图形不变坐标系变;图形改变坐标系不变。

二维变换矩阵T=\begin{bmatrix} a&b&p\\ c&d&q\\ l&m&s \end{bmatrix}  ,可分为4个子矩阵:

 

T_{1}=\begin{bmatrix} a &b \\ c & d \end{bmatrix} 比例、旋转、反射、错切;T_{2}=\begin{bmatrix} l & m \end{bmatrix} 平移

 

T_{3}= \begin{bmatrix} p\\ q \end{bmatrix} 投影;T_{4}=\left [ s \right ] 整体比例变换

 

二维几何变换的基本方法:把变换矩阵作为一个算子,作用到变换前的图形顶点集合的规范化齐次坐标矩阵上,得到变换后新的图形顶点集合的规范化齐次坐标矩阵。

二维几何变换公式\begin{bmatrix} x'_{1} &y'_{1} &1 \\ x'_{2}& y'_{2} &1 \\ ...& ... &... \\ x'_{n}&y'_{n} & 1 \end{bmatrix}= \begin{bmatrix} x_{1} &y_{1} &1 \\ x_{2}& y_{2} & 1\\ ... & ... &... \\ x_{n} & y_{n} &1 \end{bmatrix}\cdot \begin{bmatrix} a & b & p\\ c & d & q\\ l & m & s \end{bmatrix}

二、二维图形基本几何变换矩阵

以点的二维基本几何变换为例

平移变换(只改变图形位置,不改变大小和形状)

  • 坐标:\left\{\begin{matrix} x'=x+T_{x}\\ y'=y+T_{y} \end{matrix}\right. 

 

  • 齐次坐标矩阵: \begin{bmatrix} x' & y' & 1 \end{bmatrix}=\begin{bmatrix} x+T_{x} & y+T_{y} & 1 \end{bmatrix}=\begin{bmatrix} x & y & 1 \end{bmatrix}\cdot \begin{bmatrix} 1 & 0 &0 \\ 0 & 1 &0 \\ T_{x} & T_{y} & 1 \end{bmatrix}

 

  • 二维平移变换矩阵:T=\begin{bmatrix} 1 &0 &0 \\ 0& 1 &0 \\ T_{x}&T_{y} & 1 \end{bmatrix}

比例变换

  • 坐标:\left\{\begin{matrix} x'=x\cdot S_{x}\\ y'=y\cdot S_{y} \end{matrix}\right.

 

  • 齐次坐标矩阵:\begin{bmatrix} x' & y' & 1 \end{bmatrix}=\begin{bmatrix} x\cdot S_{x} &y\cdot S_{y} & 1 \end{bmatrix}=\begin{bmatrix} x &y & 1 \end{bmatrix}\cdot \begin{bmatrix} S_{x} & 0 &0 \\ 0& S_{y} &0 \\ 0 & 0 & 1 \end{bmatrix}

 

  • 二维比例变换矩阵:T=\begin{bmatrix} S_{x} & 0 &0 \\ 0& S_{y} &0 \\ 0 & 0 & 1 \end{bmatrix}

旋转变换

  • 极坐标:\left\{\begin{matrix} x=rcos \alpha\\ y=rsin \alpha \end{matrix}\right.\Rightarrow \left\{\begin{matrix} x'=rcos\left ( \alpha +\beta \right )=xcos \beta -ysin \beta \\ y'=rsin\left ( \alpha +\beta \right )=xsin \beta +ycos \beta \end{matrix}\right.

 

  • 齐次坐标矩阵:\begin{bmatrix} x' & y' & 1 \end{bmatrix}=\begin{bmatrix} x\cdot cos\theta -ysin\beta & xsin\beta +ycos\beta & 1 \end{bmatrix}=\begin{bmatrix} x &y & 1 \end{bmatrix}\cdot \begin{bmatrix} cos\beta & sin\beta &0 \\ -sin\beta & cos\beta &0 \\ 0 & 0 & 1 \end{bmatrix}

 

  • 二维旋转变换矩阵(逆正顺负):T=\begin{bmatrix} cos\beta & sin\beta &0 \\ -sin\beta & cos\beta &0 \\ 0 & 0 & 1 \end{bmatrix}T=\begin{bmatrix} cos\left ( -\beta \right ) & sin\left ( -\beta \right ) &0 \\ -sin\left ( -\beta \right ) & cos\left ( -\beta \right ) &0 \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} cos\beta & -sin\beta &0 \\ sin\beta & cos\beta &0 \\ 0 & 0 & 1 \end{bmatrix}

反射变换(原点、x轴、y轴)

  • 关于原点:\left\{\begin{matrix} x'=-x\\ y'=-y \end{matrix}\right.T=\begin{bmatrix} -1 & 0 &0 \\ 0 & -1 &0 \\ 0 & 0 & 1 \end{bmatrix}

 

  • 同理,关于x轴:T=\begin{bmatrix} 1 & 0 &0 \\ 0 & -1 &0 \\ 0 & 0 & 1 \end{bmatrix}

 

  • 关于y轴:T=\begin{bmatrix} -1 & 0 &0 \\ 0 & 1 &0 \\ 0 & 0 & 1 \end{bmatrix}

错切变换

如果c和b不为零,则意味着对图形进行错切变换。令b=0可得到沿x轴方向的错切变换,c>0是沿x轴正向,c<0是负向;同理,c=0可得到沿y轴方向的错切变换,b>0是正向。

  • 坐标:\left\{\begin{matrix} x'=x+cy\\ y'=bx+y \end{matrix}\right.

 

  • 齐次坐标矩阵:\begin{bmatrix} x' & y' & 1 \end{bmatrix}=\begin{bmatrix} x+cy & bx+y & 1 \end{bmatrix}=\begin{bmatrix} x & y & 1 \end{bmatrix}\cdot \begin{bmatrix} 1 &b &0 \\ c & 1 & 0\\ 0 &0 &1 \end{bmatrix}

 

  • 沿x,y两个方向的二维错切变换矩阵为:T=\begin{bmatrix} 1 & b &0 \\ c& 1 &0 \\ 0 & 0 &1 \end{bmatrix}

二维仿射变换(Affine Transformation)

\left\{\begin{matrix} x'=a_{11}x+a_{12}y+a_{13}\\ y'=a_{21}x+a_{22}y+a_{23} \end{matrix}\right.

 

\begin{bmatrix} x' &y' &1 \end{bmatrix}= \begin{bmatrix} x & y & 1 \end{bmatrix}\cdot \begin{bmatrix} a_{11} & a_{21} &0 \\ a_{12}& a_{22} & 0\\ a_{13} &a_{23} & 1 \end{bmatrix}

三、二维复合变换

P'=P\cdot T=P\cdot T_{1}\cdot T_{2}...\cdot T_{n}

相对于任一参考点的变换方法为:首先将参考点平移到坐标原点,相对坐标原点进行二维基本几何变换,然后再将参考点平移回原位置。

相对于任意方向的变换方法为:首先对任意方向做旋转变换,使变换方向与坐标轴重合,然后对坐标轴进行二维基本几何变换,最后做反方向旋转变换,将任意方向还原回原位置。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值