1、变换与裁剪2内容l二维变换l三维变换l裁剪3内容l二维变换l齐次坐标表示l基本变换l其它变换l三维变换l裁剪4二维变换l通过二维变换和裁剪,将定义在二维世界坐标系中的物体变换到以像素为单位的屏幕坐标系中,实现二维物体的光栅显示l矢量图形、卡通动画l二维图形中常见的变换l齐次坐标表示:l基本变换:平移、旋转、放缩 l其它变换:剪切、对称、复合5l用一个n+1维向量表示一个n维向量l二维点(x,y),用(X,Y,)表示:(2,3)的齐次坐标表示可以是(4,6,2)、(3,4.5,1.5)l齐次坐标与普通坐标之间是一一对应关系x=X/y=Y/l齐次坐标表示点的优势l防止浮点数溢出l矩阵变换的统一表示
2、XYP=1 平面关于齐次坐标6二维平移l二维点P(x,y)移动(tx,ty)后,得到点P(x,y)100110011xyxtxyty XO(x,y)(x,y)Y1001xytxxtyy采用齐次坐标齐次坐标:(x,y)(x,y,1)7二维旋转l将点P(x,y)绕坐标原点按逆时针旋转角 cossin0sincos010011xxyy XY(x,y)(x,y)8l对于进行放缩的变换公式其中sx和sy分别为x和y分量的放缩比例 二维放缩000010011xyxsxysy XO(x,y)(x,y)Y9剪切变换(Shear)l沿X-轴方向的剪切变换XY(x,y)(x,y)1001010011xtgxyy(
3、1)变换过程中,y坐标保持不变,而x坐标值发生线性变化;(2)平行于X轴的线段变换后仍平行于X轴,平行于Y轴的线段变换后错切成与Y轴成固定角的直线10对称变换XOY(x,y)(-x,y)(-x,-y)(x,-y)关于X轴的对称变换10001010011xxyy 关于Y轴的对称变换10001010011xxyy 关于坐标原点的对称变换10001010011xxyy 11对称变换XOYy=x(y,x)(x,y)XOy=-x(x,y)(-y,-x)Y关于直线y=x的对称变换01010010011xxyy 关于直线y=-x的对称变换01010010011xxyy 12复合二维变换l平移、旋转和放缩矩阵
4、通常记为T、R和Sl二维变换具有结合性:(AB)C=A(BC)l二维变换不具有交换性先旋转,再(非等比例)放缩先(非等比例)放缩,再旋转13复合二维变换l二维变换不具有交换性先平移,再旋转先旋转,再平移14复合二维变换l上述变换的组合可以得到特殊的二维变换l刚体变换l可以分解为:平移和旋转的组合l物体的形状没有变化,位置和方位有变化l仿射变换l可以分解为:平移、旋转和放缩的组合l保持点的共线性、长度的比例平行线刚体变换仿射变换15内容l二维变换l三维变换l场景坐标系和造型变换l视点坐标系和取景变换l投影坐标系和投影变换l屏幕坐标系和设备变换l裁剪16三维变换的基本概念l三维变换可以看作照相过程
5、模拟,即如何将场景中的三维几何物体变换到二维屏幕上 真实的照相机计算机中的虚拟照相机17三维变换的基本概念l场景造型:l场景坐标系:世界坐标系、局部坐标系l变换:造型变换l放置虚拟照相机l坐标系:视点坐标系(虚拟照相机的位置、朝向以及向上的方向)l变换:取景变换(在视域四棱锥进行裁剪和背面剔除)18三维变换的基本概念l投影(照相、摄影):l坐标系:投影坐标系和窗口坐标系l变换:投影变换l二维显示l坐标系:窗口坐标系、规格化设备坐标系与屏幕的物理坐标系l变换:设备变换、视窗变换19三维变换流程图局部坐标系世界坐标系视点坐标系图像坐标系规格化设备坐标系屏幕坐标系造型变换取景变换投影变换设备变换视窗
6、变换20三维变换中的各种坐标系21场景坐标系和模型变换 l几何场景建立于世界坐标系中l场景中的具体物体与局部坐标系相联系l局部坐标系可以简化物体的定义l物体=标准体素,变换l造型变换:l物体从局部坐标系到世界坐标系的变换l三维线性和非线性变换22三维模型变换:平移l三维平移T:三维点P(x,y,z)移动(tx,ty,tz)后,得到点P(x,y,z)100010001100011xyzxtxytyztz23三维模型变换:放缩l三维放缩S:三维点P(x,y,z)放缩(sx,sy,sz)后,得到点P(x,y,z)000000000100011xyzxsxysyzsz 24三维造型变换:旋转l绕x轴逆
7、时针旋转角的旋转变换Rxl绕y轴逆时针旋转角的旋转变换Ry10000cossin00sincos0100011xxyyzz cos0sin00100sin0cos0100011xxyyzz l 绕z轴逆时针旋转角的旋转变换Rzcossin00sincos000010100011xxyyzz 25三维造型变换l非线性三维模型变换:变换矩阵是空间位置(x,y,z)或者旋转角度(x,y,z)的函数。26视点坐标系和取景变换 l视点坐标系l视点坐标系定义于世界坐标系中;l其过程类似于拍照片:l照相机镜头的朝向:视线方向l照相机的位置lUP方向27视点坐标系的交互建立l坐标原点C=(Cx,Cy,Cz):
8、相机的位置l单位向量N=(Nx,Ny,Nz):镜头的朝向l与N不平行的向量UP:得到两个向量 U=(Ux,Uy,Uz)和V=(Vx,Vy,Vz),然后单位化。NUPVNUPUVN28视点坐标系的交互建立l四个矢量C、U、V、N组成了视点坐标系l由世界坐标系到视点坐标系的取景变换:(x,y,z,1)为世界坐标系中的点(u,v,n,1)为视点坐标系中的点0100001000011000100011xyzxxyzyxyzzuUUUCxvVVVCynNNNCz 29投影坐标系和投影变换 l投影变换:三维二维l投影变换是在视点坐标系CUVN中进行的l透视投影:符合人类的视觉特点,产生的投影效果更为真实
9、l平行投影:物体的相对度量保持不变(例如两个等长线段的投影结果仍然是等长的),适用于建筑和机械设计30透视投影和平行投影 31透视投影32透视投影l投影点:通常取视点坐标系中(0,0,0)点l投影平面:取作与视线方向(N方向)垂直的平面n=d。假设在视点坐标系中的点为(u,v,n),那么在投影面上的对应点坐标(up,vp)为/puun d /pvvn d33透视投影齐次坐标表示l记投影后的齐次坐标为(U,V,N,W),则透视投影齐次坐标表示为:100001000010001/01UuVvNnWd ,/,ppUVNWWWuvdn dn duvd34关于透视投影一点透视投影两点透视投影三点透视投影
10、35平行投影l沿N轴、投影平面在n=0的平行投影 0pppuuvvn 正投影斜投影PPAabcABCabcBCSSPPAabcABCabcBCSS36视域四棱锥裁剪l透视投影中视域四棱锥是指位于“前面”和“后面”之间的部分四棱锥l在进行透视投影变换时,只有位于视域四棱锥内部的几何物体才会被投影在投影平面上,而位于外部的物体将会被剔除。如果物体部分位于视域四棱锥的内部,那么物体将要基于四棱锥进行裁剪l平行投影的视域四棱锥是类似的,不过它的形状一般为长方体37视域四棱锥裁剪38规格化设备坐标和设备变换 l在投影平面上,有一个矩形区域称为视窗l上图坐标系中vovxvy的矩形和“视域四棱锥”图中的矩形
11、l物体投影后:二维齐次坐标表示 l设备变换l投影后二维齐次坐标除以最后一个坐标分量,便得到了规格化设备坐标 39屏幕坐标系和视窗变换 l屏幕坐标系:通常以像素为单位l视窗变换l二维变换:将定义在视窗中的规格化设备坐标转换到以像素为单位的屏幕坐标 l扫描转换:将连续的几何物体转换为离散的光栅表示 40内容l二维变换l三维变换l裁剪l二维线裁剪l二维多边形裁剪l文本裁剪l三维裁剪l关于三维变换与裁剪41三维变换流程图局部坐标系世界坐标系视点坐标系图像坐标系规格化设备坐标系屏幕坐标系造型变换取景变换投影变换设备变换视窗变换二维裁剪?三维裁剪?42裁剪(Clipping)l裁剪是确定场景或画面中位于给
12、定区域给定区域(2D或3D裁剪窗口)之内的部分l裁剪还可用于图形反走样、隐藏线、隐藏面、阴影、纹理等算法中l裁剪推广应用:l多面体对多面体的裁剪,实体造型系统中执行布尔运算l在窗口系统中复制、移动或删除画面中某一部分(Cut-Copy-Paste)43裁剪l裁剪算法分类:l裁剪窗口的维数:二维、三维l裁剪窗口:规则(矩形、六面体)和不规则的(任意多边形和多面体)l对象维数:点、线、多边形、多面体l实现方式:软件和硬件实现44二维线裁剪l图形裁剪就是决定画面中哪些点、线段或部分线段位于裁剪窗口之内。l位于窗口内的点、线段或部分线段被保留用于显示,而其它的则被抛弃。l在一个典型的场景之中,需要对大
13、量的点、线段进行裁剪,因此裁剪算法的效率十分重要(如何快速拒绝和接受)45二维线裁剪实例46二维线裁剪主要方法lSutherland-Cohen 裁剪:编码l中点分割裁剪:除以2,移位运算l参数化裁剪与梁友栋-Barsky 裁剪:高效率的裁剪lNicholl-Lee-Nicholl裁剪:更为精细的判断l47二维多边形裁剪 l简单的处理方法:对多边形的每条线段采用线裁剪算法l适用于线框图显示l不适用于多边形的着色显示l正确的处理方法:裁剪后的多边形仍为封闭的多边形l可能会并入一部分窗口作为多边形边界l也可能是多个不相连的多边形 48l多边形裁剪后的输出应该是定义裁剪后的多边形边界的顶点序列l如何
14、保证裁剪后区域的封闭性l如何确定裁剪后区域的边界二维多边形裁剪实例矩形窗口多边形裁剪实例49文本裁剪l矢量文本裁剪:采用前面的多边形裁剪算法实现文本的裁剪l点阵文本裁剪:l如果点阵是由软件生成的,点阵式文本的裁剪可以归结为点的裁剪问题;l如果点阵式文本是由硬件生成的,裁剪就会变得比较复杂,一个简单的处理方法是:如果字符完全位于裁剪窗口内才会显示50文本裁剪文本裁剪51三维裁剪l三维裁剪l裁剪对象:线裁剪、面裁剪l裁剪窗口:规范的立方体、视域四棱锥lSutherland-Cohen、梁友栋-Basky裁剪等算法都可以推广到三维情形52关于三维变换与裁剪l何时裁剪?l投影之前裁剪三维裁剪l优点:只
15、对可见的物体进行投影,提高消隐效率l缺点:三维裁剪相对复杂l投影之后裁剪二维裁剪l优点:二维裁剪相对容易l缺点:需要对所有的物体进行投影变换53三维裁剪实例OpenGL演示程序54三维裁剪窗口的规范化l为什么引入规范视域体l简化投影l简化裁剪l规范化变换l将任意视域体变换成规范视域体的变换55三维裁剪窗口的规范化yx-z平行投影yx-z透视投影两种规范化的视域体l平行投影:0,10,1-1,0 or-1,1-1,1-1,0 l透视投影:z,-zz,-z-1,zmin56总结l二维变换l齐次坐标表示l基本变换l其它变换l三维变换l场景坐标系和造型变换l视点坐标系和取景变换l投影坐标系和投影变换l屏幕坐标系和设备变换l裁剪l二维线裁剪l二维多边形裁剪l文本裁剪l三维裁剪l关于三维变换与裁剪