Transcript 3.1 图形的几何变换
基本的几何变换研究物体坐标在直角坐标系内的平移、 旋转和变比的规律。 主要介绍 二维图形几何变换 三维图形几何变换 参数图形几何变换 3.1.1 二维图形几何变换 一、基本变换 ⒈ 平移(Translation) 将图形对象从一个位置(x, y)移 到另一个位置(x′,y′)的变换。 (x’, y’) x x = x + Tx y = y + Ty (Tx,Ty) (x, y) 3.1.1 二维图形几何变换 (续) 一、基本变换 ⒉ 旋转(Rotation) 点(x, y)围绕原点逆时针转 动一个角度, x = x cos y sin y = y cos + x sin y (x’, y’) (x, y) f x 3.1.1 二维图形几何变换 (续) 一、基本变换 ⒉ 旋转(Rotation) 将以某个参考点(xr, yr)为圆心, 将对象上的各点(x, y)围绕圆心转 动一个逆时针角度 . x = x cos y sin y = y cos + x sin y (x’, y’) (x, y) (xr, yr) f x newx = xxr newy = yyr newx = newx cos newy sin newy = newy cos + newx sin x = newx + y = newy + xr yr x = xr+(xxr)cos (yyr)sin y = yr+(yyr)cos +(xxr)sin 3.1.1 二维图形几何变换 (续) 一、基本变换 ⒊ 变比(Scaling) y (x’, y’) 使对象按比例因子(Sx, Sy)放大或缩 小的变换 x = x · Sx y = y · Sy (3.1) (x, y) 固定点变比(scaling relative to a fixed point)。以a为固定点 1((1)作平移Tx=xa,Ty=ya; 2((2)按式(3.1)作变比; 3((3)作1)的逆变换,即作平移Tx=xa,Ty=ya。 x 3.1.1 二维图形几何变换 (续) 一、基本变换 ⒊ 变比(Scaling) 当比例因子Sx或Sy小于0时,对象不仅变化大小,而且分别按x轴或 y轴被反射 3.1.1 二维图形几何变换 (续) 二、变换矩阵 ⒉ 平的矩阵运算表示为 1 x y 1 x y 1 0 Tx 0 1 Ty 0 0 1 (3.2) 简记为p=p·T(Tx, Ty)。其中,p=[x y 1],p=[x y 1]。 1 0 0 T (Tx , Ty ) 0 1 0 Tx Ty 1 表示平移矩阵。 3.1.1 二维图形几何变换 (续) 二、变换矩阵 ⒉ 旋转的矩阵运算表示为 cos sin 0 x y 1 x y 1 sin cos 0 0 0 1 简记为p=pR(),其中R()表示旋转矩阵。 (3.2) 3.1.1 二维图形几何变换 (续) 二、变换矩阵 ⒊ 变比的矩阵运算表示为 Sx 0 0 x y 1 x y 1 0 S y 0 0 0 1 简记为p=pS(Sx, Sy),其中(Sx, Sy)表示变化矩阵。 (3.3) 3.1.1 二维图形几何变换 (续) 三、级联变换(Composite Transformation) 对于复杂的图形变换,需要通过若干个变换矩阵的级联才能实 现。这里特别要注意的是矩阵级联的顺序,由于矩阵的乘法运算不 适用交换率,因此矩阵级联的顺序不同所得到的变换结果也不相同。 例如:对任意直线的对称变换(直线方程为 Ax + By + C = 0) y o x 3.1.1 二维图形几何变换 (续) 三、级联变换(Composite Transformation) y y x x o T1 = 1 0 0 0 1 0 C/A 0 1 x o T 2= cosα -sinα 0 sinα cosα 0 0 0 1 3.1.1 二维图形几何变换 (续) 三、级联变换(Composite Transformation) x o T3 = y y y 1 0 0 0 -1 0 0 0 1 T4 = o cosα -sinα 0 x sinα 0 cosα 0 0 1 x o T5= 1 0 0 0 1 0 -C/A 0 1 3.1.1 二维图形几何变换 (续) 三、级联变换(Composite Transformation) 组合变换矩阵为: cos2α T =T1×T2×T3×T4×T5= sin2α (cos2α-1)C/A [x y 1]= [x y 1]T sin2α -cos2α sin2α*C/A 0 0 1 3.1.1 二维图形几何变换 (续) 四、二维几何变换的指令 ⒈ 建立变换矩阵的指令为 creat_transformation_matrix(xf, yf, Sx, Sy, xr, yr, , Tx, Ty, matrix); ⒉ 积累变换的指令为 accumulate_transformation_matrix(matrix1, matrix2, matrix); ⒊ 坐标变换的指令为 set_segment_transformation(Id, matrix); 3.1.2 三维图形几何变换 ⒈ 旋转 (x’, y’, z’) 1) 绕z轴旋转的公式为 x = xcos ysin y = xsin +ycos z = z (x, y, z) x 矩阵运算的表达式为 cos sin x y z 1 x y z 1 0 0 sin cos 0 0 0 0 0 0 1 0 0 1 z 3.1.2 三维图形几何变换 (续) ⒈ 旋转 y (x’, y’, z’) 2) 绕x轴旋转的公式为 x = x y = ycos zsin z = ysin +zcos (x, y, z) 矩阵运算的表达式为 x 0 0 0 1 0 cos sin 0 x y z 1 x y z 1 0 sin cos 0 0 0 0 1 z 3.1.2 三维图形几何变换 (续) ⒈ 旋转 3) 绕y轴旋转的公式为 x = zsin +xcos y = y z = zcos xsin y (x’, y’, z’) (x, y, z) x 矩阵运算的表达式为 cos 0 sin 0 0 1 0 0 x y z 1 x y z 1 sin 0 cos 0 0 0 1 0 z 3.1.2 三维图形几何变换 (续) ⒈ 旋转 4) 绕任意轴旋转 图3.6 绕任意轴P1P2旋转的前4个步骤 3.1.2 三维图形几何变换 (续) ⒉ 变比 设Sx、Sy、Sz是物体在3个坐标轴方向的比例变化量,则有公式 x = xSx,y = ySy,z = zSz 矩阵运算的表达式为 x y z 1 x y z 1 0 0 0 S y 0 0 0 0 Sz 0 0 0 0 1 Sx 0 3.1.3 参数图形几何变换 (续) ⒈ 圆锥曲线的几何变换 圆锥曲线的二次方程是Ax2+Bxy+Cy2+Dx+Ey+F=0,其相应的矩阵表达式是 简记为XSXT=0。 A B x y 1 2 D 2 B 2 D 2 E 2 x y 0 C 1 E F 2 ⑴ 平移变换。若对圆锥曲线进行平移变换,平移矩阵是 1 0 0 Tr= 0 1 0, m n 1 则平移后的圆锥曲线矩阵方程是XTrSTrTXT=0。 3.1.3 参数图形几何变换 (续) ⒈ 圆锥曲线的几何变换 ⑵ 旋转变换。若对圆锥曲线相对坐标原点作旋转变换,旋转变换 cos sin 0 矩阵是 sin cos 0 R= , 0 0 1 则旋转后的圆锥曲线矩阵方程是XRSRTXT=0。 若对圆锥曲线相对(m, n)点作旋转角变换,则旋转后的圆锥曲线 是上述Tr、R变换的复合变换,变换后圆锥曲线的矩阵方程是 XTrRSRTTrTXT=0。 ⑶ 比例变换。若对圆锥曲线相对(m, n)点进行比例变换,比例变 Sx 0 0 换矩阵为 0 S 0 ST= y , 0 0 1 则变换后圆锥曲线的矩阵方程是XTrSTSSTTTrTXT=0。 3.1.3 参数图形几何变换 (续) ⒉ 参数曲线、曲面的几何变换 若指定一个平移矢量t,对曲线平移t,即对曲线上的每一点P都 平移t。对平移后的点P*有 P* = P+t 对于参数曲线和曲面的几何系数矩阵B和代数系数矩阵A,可以直 接实现平移变换,即有 B* = B+T,T = [t t 0 0]T B*是经平移后参数曲线的几何系数矩阵,变换结果如图所示。 3.2.1 坐标系统 1. 世界坐标系(World Coordinates) z 为了描述被处理的对象,要在对象所在 的空间中定义一个坐标系,这个坐标系的长 度单位和坐标轴的方向要适合对被处理对象 o 的描述,这个坐标系通常就称之为世界坐标 系或用户坐标系。世界坐标系一般采用右手 三维笛卡儿坐标系。 x y 3.2.1 坐标系统(续) y 2. 观察坐标系(View Coordinates) 产生三维物体的视图,必须规定观 z 察点(视点)和观察方向。 好比照相时选择拍摄的位置和方向。 左手笛卡儿坐标系(上图):观察坐标 系的原点通常设置在观察点(视点),Z轴作 x o 视点 y 为观察方向。 右手笛卡儿坐标系:视点确定在Z轴 上的某一个位置,Z轴仍为观察方向(下图)。 x o 视点 z 3.2.1 坐标系统(续) 3. 设备坐标系(Device Coordinates) 与图形设备相关连的坐标系叫设备坐标系。 例如,显示器以分辨率确定坐标单位,原点在左下角或左上角; 绘图机绘图平面以绘图精度确定坐标单位,原点一般在左下角。 4. 规格化设备坐标系(Normal Device Coordinates) 为了使图形处理过程做到与设备无关,通常采用一种虚拟设备 的方法来处理,也就是图形处理的结果是按照一种虚拟设备的坐 标规定耒输出的。这种设备坐标规定为0≤X≤1,0≤Y≤1,这种 坐标系称之为规格化设备坐标系。 3.2.2 规格化变换与设备坐标变换 ⒈ 规格化变换 从窗口到视区的变换,称为规格化变换(Normalization Transformation)。 y y W(窗口) vyT wyT (wx,wy) (vx,vy) vyB wyB o V(视图区) wxL wxR x o vxL vxR x 3.2.2 规格化变换与设备坐标变换 (续) ⒈ 规格化变换 由两图的比例关系: 可得: vx – vxL wx – wxL vxR – vxL = wxR – wxL vy – vyB wy – wyB = vyT– vyB wyT – wyB vx – vxL vx = R • ( wx – wxL ) + vxL wxR – wxL vyT – vyB vy = wy – wy • ( wy – wyB ) + vyB T B 3.2.2 规格化变换与设备坐标变换 (续) ⒉ 窗口操作 ⑴ 视野的变化(zooming)。 ⑵ 摇镜头(panning)。 ⑶ 多重窗口(multiple window)。 3.2.2 规格化变换与设备坐标变换 (续) ⒊ 从规格化坐标(NDC)到设备坐标(DC)的变换 ⑴ 通常采用的公式 xDC=Sx·xNDC+dx,yDC=Sy·yNDC+dy ⑵ 方向的考虑 ⑶ 对设备坐标中像素中心的变换 3.2.3 投影变换 投影(project)是一种使三维对象映射为二维对象的变换。它可描述为 project(object(x, y, z))→object(x, y, z) 投影的要素除投影对象、投影面外,还有投影线。 按照投影线角度的不同,有两种基本投影方法: ⑴ 平行投影(parallel projection)。 它使用一组平行投影将三维对象投影到投影平面上去。 ⑵ 透视投影(perspective projection)。它使用一组由投影中心 产生的放射投影线,将三维对象投影到投影平面上去。 3.2.3 投影变换 (续) 1 平行投影-正交平行投影(orthographic P. P.) 正投影的投影面与某一坐标轴垂直,而投影方向与该坐标轴的 方向一致。 正投影的图形,在长宽高三个方向上的比例与实物保持一 致,因此,常用于工程制图。 z 主视图 y x 俯视图 侧视图 3.2.3 投影变换 (续) 2 平行投影-斜交平行投影(oblique P. P.) 投影线与投影平面成交角 正投影与斜投影 3.2.3 投影变换 (续) 3 透视投影变换 投影中心与投影平面之间的距离为有限 参数:投影方向 例子:室内白炽灯的投影,视觉系统 灭点:不平行于投影平面的平行线,经过透视投影之后收 敛于一点,称为灭点. 主灭点:平行于坐标轴的平行线的灭点。 一点透视 两点透视 三点透视 特点:产生近大远小的视觉效果,由它产生的图形深度感 强,看起来更加真实。 3.2.3 投影变换 (续) 3 透视投影变换 3.2.3 投影变换 (续) 3 透视投影变换 设投影中心在坐标原点,投影面与 Z 轴垂直,在 z = d 的 位置。点 P( x, y, z )在投影面上的投影为 P' ( xp, yp, d )。 y xp x yp y ∵ d = z , d =z xp = ∴ yp = P' o P(x,y,z) x ·d z y ·d z x d z y P P' z o d z P P' o 3.3.1 二维图元输出 用户定义的二维图元的窗口区到视图区的输出过程如下所示: 应用程序得到的坐标(UC)对窗口区进行裁剪(WC) 窗口区到视图区的规格化变换(NDC) 视图区的规格化坐标系到设备坐标系的变换(DC) 调用基本图元生成算法在图形设备上输出图形 3.3.2 输出属性及其控制 ⒈ 图元的输出属性 ⒉ 属性的组合控制 3.3.3 三维图元的输出 ⒈ ⑴ ⑵ ⑶ 定义一个视域坐标系统VCS,为此需指定如下数据: VCS坐标原点,也称View reference point。 VCS的z轴方向,也称view plane normal。 VCS的y轴方向,又称view up vector。 WCS z y y z x x VCS o ⒉ 将投影物体从世界坐标变换为视域坐标。 ⒊ 选择平行投影或透视投影进行投影变换。 使得VCS的三维对象变为VCS中在 yOx 平面中的 二维对象。 ⒋ 在VCS的 yOx 平面中取一个窗口,并定义相 应的视区,进行标准化变换。