计算机图形学完整笔记(五):二维图形变换
前言
如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。
文章目录
- 前言
- 第五章 二维图形变换
- 5.1 向量基础
- 5.2 图形坐标系
- 5.3 二维图形变换原理
- 5.3.1 图形变换概述
- 5.3.2 仿射变换
- 5.3.3 齐次坐标
- 5.4 基本几何变换
- 5.4.1 平移变换
- 5.4.2 比例变换
- 5.4.3 对称变换
- 5.4.4 旋转变换
- 5.4.5 错切变换
- 5.4.5 复合变换
- 5.4.6 坐标系变换
- 5.4.7 任意参考点的几何变换
- 5.5 二维变换矩阵
- 5.5.1 二维变换矩阵概述
- 5.5.2 二维图形几何变换的计算
- 5.4 窗口、视图及变换
- 5.4.1 窗口和视区
- 5.4.2 观察变换
- 5.4.3 窗口到视区的变换
第五章 二维图形变换
5.1 向量基础
- 向量功能
- 图形学中,处理三维物体,以及绘制对象的形状、位置、方向。有两大基本工具:向量分析、图形变换。
- 向量:点和方向的实体 (没有位置)
- 向量的表示
- 两点之差是一个向量,方向指向被减点。v=Q−Pv=Q-Pv=Q−P
- nnn 维向量就是一个 nnn 元组
- w=(w1,w2,…,wn)w=(w_1,w_2,…,w_n)w=(w1,w2,…,wn),w=[w1w2w3]w=\left[ \begin{matrix} w_1\\ w_2\\ w_3\end{matrix} \right]w=⎣⎡w1w2w3⎦⎤
- 向量基本运算
- 加减、数乘
- 归一化
- 即将向量转变为单位向量,方向不变,长度 =1=1=1
- 点积
- $a = (a_1, a_2),b=(b_1,b_2) $
- a⋅b=a1b1+a2b2=∣a∣∣b∣cos⟨a,b⟩a · b = a_1b_1+a_2b_2 = |a||b|cos\langle a,b\ranglea⋅b=a1b1+a2b2=∣a∣∣b∣cos⟨a,b⟩,用向量描述新闻,新闻相似,则向量夹角余弦接近于 1
- a⋅b>0,θ<90°a·b>0,\theta <90°a⋅b>0,θ<90° ; a⋅b=0,θ=90°a·b=0,\theta =90°a⋅b=0,θ=90° ; a⋅b<0,θ>90°a·b<0,\theta >90°a⋅b<0,θ>90° ;
- 叉积
- a=(ax,ay,az),b=(bx,by,bz),a×b=∣ijkaxayazbxbybz∣=∣a∣∣b∣sin⟨a,b⟩a=(a_x,a_y,a_z),b=(b_x,b_y,b_z),a \times b = \begin{vmatrix} i & j & k \\ a_x & a_y & a_z \\ b_x & b_y & b_z \end{vmatrix}=|a||b|sin\langle a,b\ranglea=(ax,ay,az),b=(bx,by,bz),a×b=∣∣∣∣∣∣iaxbxjaybykazbz∣∣∣∣∣∣=∣a∣∣b∣sin⟨a,b⟩
- a×ba\times ba×b 和 aaa、bbb 两个向量都正交,因此可以利用叉积求平面的法向量
- a×ba\times ba×b 的长度等于由 aaa 和 bbb 决定的平行四边形面积
- 向量线性组合
- 向量两种特殊线性组合(w=a1v1+a2v2+...+anvnw = a_1v_1 + a_2v_2+...+a_nv_nw=a1v1+a2v2+...+anvn):
- 仿射组合:线性组合的系数和等于 1,∑i=1nai=1\sum\limits_{i=1}^n a_i = 1i=1∑nai=1
- 凸组合:线性组合的系数和等于 1,且各系数非负,∑i=1nai=1(ai≥0)\sum\limits_{i=1}^n a_i = 1\ (a_i \ge 0)i=1∑nai=1 (ai≥0)
- 向量两种特殊线性组合(w=a1v1+a2v2+...+anvnw = a_1v_1 + a_2v_2+...+a_nv_nw=a1v1+a2v2+...+anvn):
5.2 图形坐标系
- 坐标系的基本概念
- 坐标系:建立图形和数之间对应联系的参考系
- 建模 (modeling):程序中用于描述对象几何信息的数值
- 观察 (viewing):表示对象中大小和位置的数值
- 二维观察变换的一般方法是在世界坐标系中指定一个观察坐标系统,以该系统为参考通过选定方向和位置来指定矩形裁剪窗口。
- 坐标系分类
- 维度分类
- 一维、二维、三维坐标系
- 坐标轴之间的空间关系分类
- 直角坐标系、极坐标系、圆柱坐标系、球坐标系
- 计算机图形学坐标系分类
- 世界坐标系:公共坐标系,现实中物体或场景的统一参照系。计算机图形系统中涉及的其它坐标系都是参照它进行定义的。
- 建模坐标系:又称局部坐标系,每个物体(对象)有它自己的局部中心和坐标系,独立于世界坐标系来定义物体的几何特性。
- 观察坐标系:依据观察窗口的方向和形状在世界坐标系中定义的坐标系。观察坐标系用于指定图形的输出范围。
- 设备坐标系:适合特定输出设备输出对象的坐标系,比如屏幕坐标系。设备坐标是整数。
- 规范化坐标系:规范化坐标系独立于设备,能容易地转变为设备坐标系,是一个中间坐标系。归一化后的坐标,坐标轴取值范围 0~1。
- 维度分类
5.3 二维图形变换原理
5.3.1 图形变换概述
- 用途
- 各种变换:比例、旋转、镜像、错切、平移
- 由一个基本的图案,经过变换组合成另外一个复杂图形
- 用很少的物体组成一个场景
- 可以通过图形变换组合得到动画效果
- 基本原理
- 图形变化,但原图形的连边规则没有改变
- 图形变化,是因为顶点位置改变决定
- 变换几何关系,保持原拓扑关系。
5.3.2 仿射变换
- 仿射变换 (Affine Transformation / Affine Map)
- 基本功能
- 平直性:直线变换后仍是直线
- 平行性:平行线变换后仍平行,且直线上点的位置顺序不变
- 二维仿射变换
- x′x'x′ 和 y′y'y′ 都是原始坐标 xxx 和 yyy 的线性函数
- {x′=a1x+b1y+c1y′=a2x+b2y+c2\begin{cases} x' = a_1x+b_1y+c_1 \\ y'=a_2x+b_2y+c_2 \end{cases}{x′=a1x+b1y+c1y′=a2x+b2y+c2
- 矩阵形式:[x∗y∗]=[xy1]⋅[a1a2b1b2c1c2]\left[ \begin{matrix} x^* & y^* \end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} a_1 & a_2\\ b_1 & b_2 \\ c_1 & c_2 \end{matrix} \right][x∗y∗]=[xy1]⋅⎣⎡a1b1c1a2b2c2⎦⎤
- 基本功能
5.3.3 齐次坐标
- 二维平面中用 (x,y)(x, y)(x,y) 表示一个点,不妨说是一个向量 (x,y)(x, y)(x,y) 表示一个点。所以可以用第 333 维为常数的 (x,y,1)(x, y, 1)(x,y,1) 表示二维平面上的向量。
- 这种 n+1n+1n+1 维表示 nnn 维的方法称为——齐次坐标表示法,nnn 维向量 (p1,p2,⋯,pn)(p_1,p_2,\cdots,p_n)(p1,p2,⋯,pn) 表示为 (hp1,hp2,⋯,hpn,h)(hp_1,hp_2,\cdots,hp_n, h)(hp1,hp2,⋯,hpn,h),其中 $h $ 称为哑坐标,特别的 h=1h=1h=1 时称齐次坐标为规格化坐标。
- 二维仿射变换,齐次坐标表示:[x∗y∗1]=[xy1]⋅[a1a20b1b20c1c21]\left[ \begin{matrix} x^* & y^*&1 \end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} a_1 & a_2 &0\\ b_1 & b_2&0 \\ c_1 & c_2 &1\end{matrix} \right][x∗y∗1]=[xy1]⋅⎣⎡a1b1c1a2b2c2001⎦⎤
- 不使用齐次坐标可以做比例、对称、旋转变换,但做不到平移变化,无法增加常数项。
5.4 基本几何变换
5.4.1 平移变换
- 不产生变形而移动物体的刚体变换,即物体上的每个点移动相同数量的坐标
- 坐标形式:{x∗=x+Txy∗=y+Ty\begin{cases} x^* = x+T_x \\ y^*=y + T_y \end{cases}{x∗=x+Txy∗=y+Ty
- 齐次坐标形式:[x∗y∗1]=[xy1]⋅[100010TxTy1]=[x+Txy+Ty1]\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} 1 & 0 &0 \\0&1&0\\T_x&T_y&1 \end{matrix} \right] =\left[ \begin{matrix} x+Tx & y+Ty &1\end{matrix}\right][x∗y∗1]=[xy1]⋅⎣⎡10Tx01Ty001⎦⎤=[x+Txy+Ty1]
5.4.2 比例变换
- 相对于坐标原点沿 xxx 方向放缩 SxS_xSx 倍,沿 yyy 方向放缩 SyS_ySy 倍。S>1S > 1S>1 放大,S<1S < 1S<1 缩小。
- 坐标形式:{x∗=x⋅Sxy∗=y⋅Sy\begin{cases} x^* = x·S_x \\ y^*=y·S_y \end{cases}{x∗=x⋅Sxy∗=y⋅Sy
- 齐次坐标形式:[x∗y∗1]=[xy1]⋅[Sx000Sy0001]=[x⋅Sxy⋅Sy1]\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} S_x & 0 &0 \\0&S_y&0\\0&0&1 \end{matrix} \right] =\left[ \begin{matrix} x·S_x & y·S_y &1\end{matrix}\right][x∗y∗1]=[xy1]⋅⎣⎡Sx000Sy0001⎦⎤=[x⋅Sxy⋅Sy1]
- 当 Sx=SyS_x =S_ySx=Sy 时,为整体比例变换,[x∗y∗1]=[xy1]⋅[10001000S]=[xyS]\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} 1 & 0 &0 \\0&1&0\\0&0&S \end{matrix} \right] =\left[ \begin{matrix} x & y &S\end{matrix}\right][x∗y∗1]=[xy1]⋅⎣⎡10001000S⎦⎤=[xyS],S>1S>1S>1 放大,0<S<10<S<10<S<1 缩小,S<0S<0S<0 发生关于原点的对称等比变换。
5.4.3 对称变换
- 也称镜像变换或反射变换。有关于x轴、y轴、原点、某条直线的对称变换。
- 关于 xxx 轴对称:[x∗y∗1]=[xy1]⋅[1000−10001]=[x−y1]\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} 1 & 0 &0 \\0&-1&0\\0&0&1 \end{matrix} \right] =\left[ \begin{matrix} x&-y&1\end{matrix}\right][x∗y∗1]=[xy1]⋅⎣⎡1000−10001⎦⎤=[x−y1]
- 关于 yyy 轴对称:[x∗y∗1]=[xy1]⋅[−100010001]=[−xy1]\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} -1 & 0 &0 \\0&1&0\\0&0&1 \end{matrix} \right] =\left[ \begin{matrix} -x&y&1\end{matrix}\right][x∗y∗1]=[xy1]⋅⎣⎡−100010001⎦⎤=[−xy1]
- 关于原点对称:[x∗y∗1]=[xy1]⋅[−1000−10001]=[−x−y1]\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} -1 & 0 &0 \\0&-1&0\\0&0&1 \end{matrix} \right] =\left[ \begin{matrix} -x&-y&1\end{matrix}\right][x∗y∗1]=[xy1]⋅⎣⎡−1000−10001⎦⎤=[−x−y1]
5.4.4 旋转变换
- 将点绕原点旋转角度 θ\thetaθ ,逆时针为正,顺时针为负
- 坐标形式(逆时针):{x∗=r⋅cos(α+θ)=r⋅cosα⋅cosθ−r⋅sinα⋅sinθy∗=r⋅sin(α+θ)=r⋅cosα⋅sinθ+r⋅sinα⋅cosθ⇒{x∗=x⋅cosθ−y⋅sinθy∗=x⋅sinθ+y⋅cosθ\begin{cases} x^* =r·cos(\alpha+\theta)=r·cos\alpha ·cos\theta-r·sin\alpha ·sin\theta \\ y^* =r·sin(\alpha+\theta)=r·cos\alpha ·sin\theta + r·sin\alpha ·cos\theta\end{cases} \Rightarrow \begin{cases} x^* =x ·cos\theta-y ·sin\theta \\ y^* =x ·sin\theta + y ·cos\theta\end{cases}{x∗=r⋅cos(α+θ)=r⋅cosα⋅cosθ−r⋅sinα⋅sinθy∗=r⋅sin(α+θ)=r⋅cosα⋅sinθ+r⋅sinα⋅cosθ⇒{x∗=x⋅cosθ−y⋅sinθy∗=x⋅sinθ+y⋅cosθ
- 齐次坐标形式(逆时针):[x∗y∗1]=[xy1]⋅[cosθsinθ0−sinθcosθ0001]=[x⋅cosθ−y⋅sinθx⋅sinθ+y⋅cosθ1]\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} cos\theta & sin\theta &0\\-sin\theta&cos\theta & 0\\0&0&1 \end{matrix} \right] =\left[ \begin{matrix} x ·cos\theta-y ·sin\theta & x ·sin\theta + y ·cos\theta &1\end{matrix}\right][x∗y∗1]=[xy1]⋅⎣⎡cosθ−sinθ0sinθcosθ0001⎦⎤=[x⋅cosθ−y⋅sinθx⋅sinθ+y⋅cosθ1]
- 顺时针只要将 θ=−θ\theta = -\thetaθ=−θ 即可。
5.4.5 错切变换
- 弹性物体的变形处理
- 变换矩阵中的非对角线元素大都为零,若变换矩阵中的非对角元素不为 000,则意味着 xxx、yyy 同时对图形的变换起作用。也就是说,变换矩阵中非对角线元素起着把图形沿 xxx 或 yyy 方向错切的作用。
- xxx 值或 yyy 值越小,错切量越小;xxx 值或 yyy 值越大,错切量越大。
- 齐次坐标形式:[x∗y∗1]=[xy1]⋅[1b0c10001]=[c+cybx+y1]\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} 1 & b & 0\\ c &1 &0\\0&0&1 \end{matrix} \right] =\left[ \begin{matrix}c+cy&bx+y &1\end{matrix}\right][x∗y∗1]=[xy1]⋅⎣⎡1c0b10001⎦⎤=[c+cybx+y1]
- 沿 xxx 方向错切,即 b=0b=0b=0 :[x∗y∗1]=[xy1]⋅[100c10001]=[c+cyy1]\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} 1 & 0 & 0\\ c &1 &0\\0&0&1 \end{matrix} \right] =\left[ \begin{matrix}c+cy&y &1\end{matrix}\right][x∗y∗1]=[xy1]⋅⎣⎡1c0010001⎦⎤=[c+cyy1]
5.4.5 复合变换
- 图形作大于一次的变换,P∗=P⋅T=P⋅(T1⋅T2⋅⋯⋅Tn),n>1P^* = P · T = P·(T_1·T_2·\cdots ·T_n) ,n\gt 1P∗=P⋅T=P⋅(T1⋅T2⋅⋯⋅Tn),n>1,矩阵相乘不可交换!任何一个复杂的几何变换都可以看作基本几何变换的组合形式。
- 二维复合平移:T=Tt1⋅Tt2=[100010Tx1Ty11]⋅[100010Tx1Ty11]=[100010Tx1+Tx2Ty1+Ty21]T = T_{t1}·T_{t2} = \left[ \begin{matrix} 1 & 0 &0 \\0&1&0\\T_{x1}&T_{y1}&1 \end{matrix} \right] · \left[ \begin{matrix} 1 & 0 &0 \\0&1&0\\T_{x1}&T_{y1}&1 \end{matrix} \right] =\left[ \begin{matrix} 1 & 0 &0 \\0&1&0\\T_{x1}+T_{x2}&T_{y1}+T_{y2}&1 \end{matrix} \right]T=Tt1⋅Tt2=⎣⎡10Tx101Ty1001⎦⎤⋅⎣⎡10Tx101Ty1001⎦⎤=⎣⎡10Tx1+Tx201Ty1+Ty2001⎦⎤
- 二维复合比例:T=Ts1⋅Ts2=[Sx1000Sy10001]⋅[Sx2000Sy20001]=[Sx1⋅Sx2000Sy1⋅Sy20001]T = T_{s1}·T_{s2} = \left[ \begin{matrix} S_{x1} & 0 &0 \\0&S_{y1}&0\\0&0&1 \end{matrix} \right] · \left[ \begin{matrix} S_{x2} & 0 &0 \\0&S_{y2}&0\\0&0&1 \end{matrix} \right]= \left[ \begin{matrix} S_{x1}·S_{x2} & 0 &0 \\0&S_{y1}·S_{y2}&0\\0&0&1 \end{matrix} \right]T=Ts1⋅Ts2=⎣⎡Sx1000Sy10001⎦⎤⋅⎣⎡Sx2000Sy20001⎦⎤=⎣⎡Sx1⋅Sx2000Sy1⋅Sy20001⎦⎤
- 二维复合旋转:T=Tr1⋅Tr2=[cosθ1sinθ10−sinθ1cosθ10001]⋅[cosθ2sinθ20−sinθ2cosθ20001]=[cos(θ1+θ2)sin(θ1+θ2)0−sin(θ1+θ2)cos(θ1+θ2)0001]T = T_{r1}·T_{r2} = \left[ \begin{matrix} cos\theta_1 & sin\theta_1 &0\\-sin\theta_1&cos\theta_1 & 0\\0&0&1 \end{matrix} \right] · \left[ \begin{matrix} cos\theta_2 & sin\theta_2 &0\\-sin\theta_2&cos\theta_2 & 0\\0&0&1 \end{matrix} \right]=\left[ \begin{matrix} cos(\theta_1+\theta_2) & sin(\theta_1+\theta_2) &0\\-sin(\theta_1+\theta_2)&cos(\theta_1+\theta_2) & 0\\0&0&1 \end{matrix} \right]T=Tr1⋅Tr2=⎣⎡cosθ1−sinθ10sinθ1cosθ10001⎦⎤⋅⎣⎡cosθ2−sinθ20sinθ2cosθ20001⎦⎤=⎣⎡cos(θ1+θ2)−sin(θ1+θ2)0sin(θ1+θ2)cos(θ1+θ2)0001⎦⎤
5.4.6 坐标系变换
- 图形变换经常需要从一个坐标系变换到另一个坐标系,如下图从 x0yx0yx0y 变换到 x′0′y′x'0'y'x′0′y′
- 上图变换分两步完成,x′0′y′→平移x′0y′→旋转x0yx'0'y' \xrightarrow{平移} x'0y' \xrightarrow{旋转} x0yx′0′y′平移x′0y′旋转x0y,注意是从目标到源
- 平移变换 —— 将 x′0′y′x'0'y'x′0′y′ 坐标系的原点平移至 x0yx0yx0y 坐标系的原点
- 旋转变换 —— 将 x′x'x′ 轴旋转到 xxx 轴上
- T=Tt⋅Tr=[100010−x0−y01]⋅[cos(−θ)sin(−θ)0−sin(−θ)cos(−θ)0001]T = T_{t}·T_{r} = \left[ \begin{matrix} 1 & 0 &0 \\0&1&0\\-x_0&-y_0&1 \end{matrix} \right] · \left[ \begin{matrix} cos(-\theta) & sin(-\theta) &0\\-sin(-\theta)&cos(-\theta) & 0\\0&0&1 \end{matrix} \right]T=Tt⋅Tr=⎣⎡10−x001−y0001⎦⎤⋅⎣⎡cos(−θ)−sin(−θ)0sin(−θ)cos(−θ)0001⎦⎤
5.4.7 任意参考点的几何变换
- 在以往的变换中,以 (0, 0) 为参考点,倘若以任意点为参考点,则:
- 将参考点移到原点(平移)
- 针对原点进行二维几何变换(变换)
- 将原点移到参考点(反平移)
5.5 二维变换矩阵
5.5.1 二维变换矩阵概述
二维空间中某点的变化可以表示成点的齐次坐标与 3 阶的二维变换矩阵 T2dT_{2d}T2d 相乘
[x∗y∗1]=[xy1]⋅T2d=[xy1]⋅[abpcdqlms]\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]·T_{2d}=\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· \left[ \begin{matrix} a&b&p\\c&d&q\\l&m&s \end{matrix} \right][x∗y∗1]=[xy1]⋅T2d=[xy1]⋅⎣⎡aclbdmpqs⎦⎤
5.5.2 二维图形几何变换的计算
- 点的变换:[x∗y∗1]=[xy1]⋅T\left[ \begin{matrix} x^* & y^* &1\end{matrix}\right] =\left[ \begin{matrix} x & y & 1 \end{matrix}\right]· T[x∗y∗1]=[xy1]⋅T
- 直线的变换(两端点的变换):[x1∗y1∗1x2∗y2∗1]=[x1y11x2y21]⋅T\left[ \begin{matrix} x_1^* & y_1^* &1\\ x_2^* & y_2^* &1\end{matrix}\right] =\left[ \begin{matrix} x_1 & y_1 &1\\ x_2 & y_2 &1\end{matrix}\right] ·T[x1∗x2∗y1∗y2∗11]=[x1x2y1y211]⋅T
- 多边形的变换(每个顶点的变换):p=[x1∗y1∗1x2∗y2∗1⋯⋯⋯xn∗yn∗1]p =\left[ \begin{matrix} x_1^* & y_1^* &1\\ x_2^* & y_2^* &1 \\ \cdots&\cdots&\cdots\\x_n^* &y_n^*&1\end{matrix}\right]p=⎣⎢⎢⎡x1∗x2∗⋯xn∗y1∗y2∗⋯yn∗11⋯1⎦⎥⎥⎤
5.4 窗口、视图及变换
5.4.1 窗口和视区
窗口:世界坐标系中要显示的区域
视区:窗口映射到显示器上的区域
窗口定义显示什么;视区定义在何处显示;二者需要进行坐标变换
世界坐标系中的一个窗口可以对应于多个视区
- 窗口→观察变换视区窗口\xrightarrow{观察变换} 视区窗口观察变换视区
5.4.2 观察变换
观察变换 (Viewing Transformation)
变焦距效果
- 窗口放大/缩小,视区不变,图形缩小/放大
整体缩放效果
- 窗口不变,视区放大/缩小,图形放大/缩小
漫游效果
- 把一个固定大小的窗口在一幅大图形上移动,视区不变。
5.4.3 窗口到视区的变换
- 窗口的点 →\rightarrow→ 视区的点
- 保持比例的映射
- 保持比例:映射之后,中心点仍然在中心,边界点仍然在边界
- {sx=A×x+Csy=B×y+D\begin{cases} sx = A\times x+C \\ sy = B\times y+D\end{cases}{sx=A×x+Csy=B×y+D
- 比例保持:x−wxlwxr−wxl=sx−vxlvxr−vxl⇒sx=x−wxlwxr−wxl(vxr−vxl)+vxl\Large \frac{x-w_{xl}}{w_{xr}-w_{xl}} = \frac{sx-v_{xl}}{v_{xr}-v_{xl}} \Rightarrow sx = \frac{x-w_{xl}}{w_{xr}-w_{xl}}(v_{xr}-v_{xl})+v_{xl}wxr−wxlx−wxl=vxr−vxlsx−vxl⇒sx=wxr−wxlx−wxl(vxr−vxl)+vxl
- 根据倍数关系:sx=vxr−vxlwxr−wxlx+(vxl−vxr−vxlwxr−wxlwxl)=Ax+C,A=vxr−vxlwxr−wxl,C=vxl−A×wxl\large sx = \frac{v_{xr}-v_{xl}}{w_{xr}-w_{xl}} x + (v_{xl}-\frac{v_{xr}-v_{xl}}{w_{xr}-w_{xl}} w_{xl}) = Ax + C,\\ A = \frac{v_{xr}-v_{xl}}{w_{xr}-w_{xl}},C=v_{xl}-A\times w_{xl}sx=wxr−wxlvxr−vxlx+(vxl−wxr−wxlvxr−vxlwxl)=Ax+C,A=wxr−wxlvxr−vxl,C=vxl−A×wxl
- 同理,B=vyt−vybwyt−wyb,D=vyb−B×wyb\large B= \frac{v_{yt}-v_{yb}}{w_{yt}-w_{yb}},D=v_{yb}-B\times w_{yb}B=wyt−wybvyt−vyb,D=vyb−B×wyb
计算机图形学完整笔记(五):二维图形变换相关推荐
- 【计算机图形学】小白谈计算机图形学(四)二维三维图形变换—1
小白谈计算机图形学(四)二维三维图形变换-1 窗口与视图 二维图形的几何变换 平移变换 比例变换 旋转变换 二维图形变换的矩阵表示 三种变换 齐次坐标变换 原二维线性变换 齐次坐标法 复合变换 例题: ...
- 计算机图形学-二维图形变换 笔记总结与代码实战
文章目录 1.向量基础知识 2.图形坐标系 3.二维图形变换原理 4.二维图形几何变换 5.窗口视区变换 基本二维几何变换代码 二维复合变换实战-五星红旗绘制 1.向量基础知识 为什么向量如此重要:在 ...
- 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等
接上文 计算机图形学 学习笔记(六):消隐算法:Z-buffer,区间扫描线,Warnock,光栅图形学小结 在图形学中,有两大基本工具:向量分析,图形变换.本文将重点讲解向量和二维图形的变换. 5. ...
- 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...
计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...
- 计算机图形学二维图形基本变换实验原理,江苏大学-计算机图形学第三次实验报告-二维图形变换...
<江苏大学-计算机图形学第三次实验报告-二维图形变换>由会员分享,可在线阅读,更多相关<江苏大学-计算机图形学第三次实验报告-二维图形变换(13页珍藏版)>请在人人文库网上搜索 ...
- c语言二维图形变换程序,C语言图形编程(五、二维图形变换-01)(国外英文资料).doc...
C语言图形编程(五.二维图形变换-01)(国外英文资料) C语言图形编程(五.二维图形变换-01)(国外英文资料) The first user coordinates to the screen c ...
- CAD 实验4 二维图形变换
实验4 二维图形变换 实验目的: (1)掌握二维几何图形变化的方法. (2)熟悉Windows窗口图形的生成方法. 实验环境与设备: 已安装Visual Studio 2010(或其以上版本)集 ...
- 计算机图形学--二维图形变换
目录 概述 平移 对称 旋转 错切 缩放 概述 对于二维图形来讲,所有基本变换均可以通过确定图形的点的平移.对称.旋转.错切以及缩放几种变换组合得到,而在上述几种变换中,除对称变换外,其余变换均可通过 ...
- 【计算机图形学】c++ OpenGL 二维变换(包括多边形绘制、平移、旋转及缩放)
运行结果演示 源代码 // 二维变换.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include<GL/glut.h> #i ...
- c语言二维图形变换程序,【计算机图形学】3-2 二维几何变换根本代码
[计算机图形学]3-2 二维几何变换基本代码 返回目录 基本理论参见:[计算机图形学]3-1 二维几何变换基本理论 注:这里不考虑插值的问题. 全部的代码都在https://github.com/Cy ...
最新文章
- 亚马逊ses如何发qq_使用Amazon SES发送电子邮件
- cocostuff10k数据集介绍_COCO数据集整理
- Android使用ViewPager实现左右循环滑动及轮播效果
- 操作系统:进程间通信与线程间同步
- VINS-Mono关键知识点总结——前端详解
- HashSet.contains
- Maven中使用tomcat:run出现错误org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
- 三圆相交阴影部分面积_小学六年级图形面积的题很多家长都不会,一些初中生也未必会做...
- 阿里P8亲自教你!熬夜整理华为最新Java笔试题
- 如何设置mysql表中文乱码_php mysql表中文乱码问题如何解决
- 【web开发】js实现表单提交
- 网站虚拟主机是什么?(什么是虚拟主机空间)
- JavaScript如何打开exe文件
- 淘系电商再无对手,腾讯为何“资敌”?
- redis主从复制,主读不到从节点信息的坑
- Humble Numbers (谦卑数 || 丑数)
- navigationbar 背景色
- 基于php民宿,那些美炸天的民宿设计!
- matlab入门 — 反射率、折射率的变化
- 【知识图谱学习】知识图谱搭建医疗问答系统
热门文章
- MCSE 2012 R2之工作文件夹Word Folders(2)
- [xmind] ASP.NET 设计模式 - UX 用户体验
- C#网络编程之面向连接的套接字
- python基本编程技巧_Python编程小白入门技巧,从入门到精通只需一个月。
- 2021最新SSM博客,功能完善,初云博客增强版
- 一阶低通滤波器方程_一阶RC低通滤波器和RC高通滤波器简介-模拟/电源-与非网...
- 又见 Lucky Number
- 索引超出矩阵维度怎么修改程序_seo关键词优化工具怎么收费
- php pdo oci8,PHP516 用phpize增加扩展PDO_OCI和OCI8
- mysql 改进前序遍历树_“无限层级传销”系统设计?前序遍历树的Mysql方案