杭杭州紫金港培训学校(紫金港专升本)
同等学力申硕计算机科学与技术学科综合考前辅导第十一章 计算机图形学第 30 节 / 共 32 节约 30 分钟报名学员看全文

几何变换、观察变换与裁剪

理解齐次坐标,会写二维、三维基本变换矩阵并做复合变换,会做窗口到视区的变换,掌握 Cohen-Sutherland、Liang-Barsky 直线裁剪和多边形逐边裁剪,了解平行投影、透视投影和观察坐标系。

本节考点:齐次坐标二维几何变换三维几何变换窗口视图变换二维裁剪投影变换

本节导读

本节讲图形学大纲第二部分中的窗口视图变换、二维图形裁剪、二维和三维几何变换,以及第三部分中的投影变换、观察空间和三维裁剪。

这一节是图形学里计算最集中的地方:写变换矩阵、算复合变换后的坐标、算窗口到视区的映射、求裁剪后的线段端点。先记住一条约定:本课把点写成行向量,用 [x y 1][x \ y \ 1][x y 1] 右乘变换矩阵,复合变换时先做的变换写在左边;有的教材把点写成列向量、矩阵左乘,矩阵要转置,复合的顺序也反过来,做题时以题目或教材的约定为准。

齐次坐标

用 n+1n + 1n+1 维向量表示 nnn 维点的方法叫齐次坐标:二维点 (x,y)(x, y)(x,y) 写成 (hx,hy,h)(hx, hy, h)(hx,hy,h),h≠0h \ne 0h=0;取 h=1h = 1h=1 叫规范化齐次坐标。反过来,齐次坐标 (X,Y,h)(X, Y, h)(X,Y,h) 表示的点是 (Xh,Yh)\left(\dfrac{X}{h}, \dfrac{Y}{h}\right)(hX​,hY​)。引入齐次坐标后,平移也能写成矩阵乘法,各种变换就可以统一用矩阵相乘来复合;三维变换相应地使用 4×44 \times 44×4 矩阵。

二维几何变换

平移、比例和旋转(绕原点逆时针转 θ\thetaθ)的矩阵为:

T=[100010txty1],S=[sx000sy0001],R=[cos⁡θsin⁡θ0−sin⁡θcos⁡θ0001]T = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ t_x & t_y & 1 \end{bmatrix}, \quad S = \begin{bmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & 1 \end{bmatrix}, \quad R = \begin{bmatrix} \cos\theta & \sin\theta & 0 \\ -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}T=​10tx​​01ty​​001​​,S=​sx​00​0sy​0​001​​,R=​cosθ−sinθ0​sinθcosθ0​001​​

对称变换:关于 xxx 轴对称把 yyy 变号,关于 yyy 轴对称把 xxx 变号,关于原点对称两者都变号,关于直线 y=xy = xy=x 对称交换 xxx 和 yyy。错切变换为 x′=x+cyx' = x + cyx′=x+cy,y′=bx+yy' = bx + yy′=bx+y。一般的 3×33 \times 33×3 变换矩阵中,左上 2×22 \times 22×2 子块实现比例、旋转、对称和错切,第三行前两个元素实现平移。

复合变换就是把基本变换矩阵按先后顺序相乘。例如绕任意点 (xr,yr)(x_r, y_r)(xr​,yr​) 旋转:先平移 (−xr,−yr)(-x_r, -y_r)(−xr​,−yr​) 使该点移到原点,再绕原点旋转,最后平移 (xr,yr)(x_r, y_r)(xr​,yr​) 回去,复合矩阵为 T(−xr,−yr)⋅R(θ)⋅T(xr,yr)T(-x_r, -y_r) \cdot R(\theta) \cdot T(x_r, y_r)T(−xr​,−yr​)⋅R(θ)⋅T(xr​,yr​)。以任意点为不动点的比例变换同理。矩阵乘法不满足交换律,顺序不能随意调换。

三维几何变换

三维平移矩阵的第四行为 [tx ty tz 1][t_x \ t_y \ t_z \ 1][tx​ ty​ tz​ 1],比例矩阵为 diag(sx,sy,sz,1)\text{diag}(s_x, s_y, s_z, 1)diag(sx​,sy​,sz​,1)。在右手坐标系中,绕坐标轴逆时针旋转 θ\thetaθ(从该轴正向朝原点看)的矩阵为:

Rx=[10000cos⁡θsin⁡θ00−sin⁡θcos⁡θ00001],Rz=[cos⁡θsin⁡θ00−sin⁡θcos⁡θ0000100001]R_x = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos\theta & \sin\theta & 0 \\ 0 & -\sin\theta & \cos\theta & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}, \quad R_z = \begin{bmatrix} \cos\theta & \sin\theta & 0 & 0 \\ -\sin\theta & \cos\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}Rx​=​1000​0cosθ−sinθ0​0sinθcosθ0​0001​​,Rz​=​cosθ−sinθ00​sinθcosθ00​0010​0001​​

绕 yyy 轴旋转时,x′=xcos⁡θ+zsin⁡θx' = x\cos\theta + z\sin\thetax′=xcosθ+zsinθ,z′=−xsin⁡θ+zcos⁡θz' = -x\sin\theta + z\cos\thetaz′=−xsinθ+zcosθ,矩阵中正弦项的符号位置与另外两个相反。绕任意轴旋转可以分解为:平移使轴过原点,旋转使轴与某坐标轴重合,绕该坐标轴旋转,再逆向做前面的变换。

窗口视图变换

窗口是用户坐标系中要显示的矩形区域,视区(视口)是屏幕上用来显示的矩形区域。把窗口中的点 (xw,yw)(x_w, y_w)(xw​,yw​) 映射到视区 (xv,yv)(x_v, y_v)(xv​,yv​):

xv=xvl+(xw−xwl)⋅xvr−xvlxwr−xwl,yv=yvb+(yw−ywb)⋅yvt−yvbywt−ywbx_v = x_{vl} + (x_w - x_{wl}) \cdot \frac{x_{vr} - x_{vl}}{x_{wr} - x_{wl}}, \quad y_v = y_{vb} + (y_w - y_{wb}) \cdot \frac{y_{vt} - y_{vb}}{y_{wt} - y_{wb}}xv​=xvl​+(xw​−xwl​)⋅xwr​−xwl​xvr​−xvl​​,yv​=yvb​+(yw​−ywb​)⋅ywt​−ywb​yvt​−yvb​​

下标 lll、rrr、bbb、ttt 分别表示左、右、下、上边界。它相当于先平移窗口左下角到原点,再做比例变换,最后平移到视区左下角。两个方向的比例不相等时图形会变形。

二维裁剪

Cohen-Sutherland 编码裁剪:用窗口的四条边把平面分成 9 个区域,每个端点得到 4 位编码,每一位表示是否在窗口某条边的外侧(本课按「上、下、右、左」的次序,各位次序以教材为准)。两端点编码都为 0000,线段完全在窗口内,直接保留;两编码按位与不为 0,两端点在同一条边的外侧,直接舍弃;否则求线段与某条边界的交点,舍去外侧部分后重复判断。中点分割裁剪用反复取中点代替求交。

本节后面还有约 2210 字:报名学员看全文

每门课前 10 节免费看全文;从第 11 节起,完整教程要报名后由顾问在后台为你的账号开通才能看。

题库账号可以直接登录,但第 11 节起的完整教程要报名后由后台开通才能看。

学完练一练

按本节考点从本课的课后练习里抽题(每次 10 道以内),做完看解析、错题自动进错题本。第 11 节起的课后练习报名学员才能练。

本节内容由 AI 辅助编写,配图由 AI 生成,仅供备考参考;考试要求以《全国各类成人高等学校招生考试大纲(2024 年版)》及浙江省教育考试院当年公布为准。

我要提问免费报名咨询