《图形处理技术基础幻灯片.ppt》由会员分享,可在线阅读,更多相关《图形处理技术基础幻灯片.ppt(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、图形处理技术基础第1页,共53页,编辑于2022年,星期五第四章 图形处理技术基础内容内容知识点知识点学习要求学习要求建议自学学时建议自学学时图元生成方法图元的生成简介应用4学时基本图元的生成算法图形的几何变换图形几何变换的基本原理综合应用4学时二维图形的基本变换二维图形的组合变换三维图形的变换工程图的生成图形的消隐技术消隐的概念与作用了解1学时消隐算法的基本测试方法常用消隐算法图形的光照处理技术光照处理的基本原理了解1学时简单光反射模型光照处理的基本算法图形裁剪技术窗口与视区理解2学时二维图形裁剪思考题第2页,共53页,编辑于2022年,星期五n学习目标:学习目标:图形处理是图形处理是CAD
2、/CAM中的关键技术,要求学习者中的关键技术,要求学习者全面掌握图形处理技术的基础知识,包括图元生成、编全面掌握图形处理技术的基础知识,包括图元生成、编辑、图形变换、裁剪、消隐、光照等;学会使用典型的辑、图形变换、裁剪、消隐、光照等;学会使用典型的矢量绘图软件。矢量绘图软件。n学习重点:学习重点:图形的几何变换。图形的几何变换。n学习难点:学习难点:裁剪算法、消隐算法、光照处理算法。裁剪算法、消隐算法、光照处理算法。n学习建议学习建议:n在学习过程中,结合一个商品化绘图软件,如:在学习过程中,结合一个商品化绘图软件,如:Pro/E、AutoCAD、UG、solidwork的使用,加深对本知识点
3、的理解;的使用,加深对本知识点的理解;n利用利用OpenGL图形库编程能快速应用图形处理技术图形库编程能快速应用图形处理技术第3页,共53页,编辑于2022年,星期五图形处理技术基础n图元生成(图元生成()n几何变换(几何变换()n投影变换(投影变换()n视窗变换(视窗变换()n裁剪技术(裁剪技术()n消隐技术消隐技术n光照技术光照技术第4页,共53页,编辑于2022年,星期五阴极射线管(CRT)l阴极射线管阴极射线管(CRT)组成:包括电子枪、聚焦系统、加速电极、偏转系统、荧光屏组成:包括电子枪、聚焦系统、加速电极、偏转系统、荧光屏工作原理:电子枪发射电子束,经过聚焦系统、加速电极、偏工作原
4、理:电子枪发射电子束,经过聚焦系统、加速电极、偏转系统,轰击到荧光屏的不同部位,发光产生可见转系统,轰击到荧光屏的不同部位,发光产生可见 的图形。的图形。结构结构第5页,共53页,编辑于2022年,星期五彩色阴极射线管n点状影孔板工作原理点状影孔板工作原理n红、绿、兰三基色红、绿、兰三基色n三色荧光点(很小并充分靠近三色荧光点(很小并充分靠近-像素)像素)n三支电子枪三支电子枪电子枪、影孔板中的一个小孔电子枪、影孔板中的一个小孔和荧光点呈一直线;和荧光点呈一直线;每个小孔与一个像素(即三个每个小孔与一个像素(即三个荧光点)对应荧光点)对应第6页,共53页,编辑于2022年,星期五单色光栅扫描图
5、形显示器工作原理采用帧存储器映射到屏幕,逐点对应。寄存器DAC电子枪帧存屏幕单个存储位面的单色光栅扫描图形显示器的工作原理亮/暗第7页,共53页,编辑于2022年,星期五彩色光栅扫描图形显示器工作原理DAC电子枪帧存屏幕三存储位面的彩色光栅扫描图形显示器的工作原理三存储位面的彩色光栅扫描图形显示器的工作原理DACDAC0 1 0彩色显示彩色显示8种颜色种颜色3位DAC8级灰度第8页,共53页,编辑于2022年,星期五帧缓冲存储器(显存)作用:作用:存储屏幕上像素的颜色值存储屏幕上像素的颜色值n帧缓存中单元数目与显示器上像素的数目相同,单元与像素一一对应,帧缓存中单元数目与显示器上像素的数目相同
6、,单元与像素一一对应,各单元的数值决定了其对应像素的颜色。各单元的数值决定了其对应像素的颜色。n显示颜色的种类数量与帧缓存中每个单元的位数有关(图示帧缓冲器的每个显示颜色的种类数量与帧缓存中每个单元的位数有关(图示帧缓冲器的每个 单元只有一位)。单元只有一位)。n若每个单元有若每个单元有24位(每种基色占位(每种基色占8位)即显示系统可同时产生位)即显示系统可同时产生224种颜色(种颜色(24位真位真彩色)。彩色)。n分辨率分辨率M*N、颜色个数、颜色个数K与显存大小与显存大小V的关系的关系第9页,共53页,编辑于2022年,星期五光栅扫描绘图过程绘图过程第10页,共53页,编辑于2022年,
7、星期五2921 22 23 24 25 262028271018171615131412111930图元生成n点点v用图形的颜色对象素进行写操作(调用设备驱动程序)用图形的颜色对象素进行写操作(调用设备驱动程序)n直线直线nDDADDA算法算法n中点画线法中点画线法nBresenhamBresenham算法算法n圆弧圆弧n填充填充一一维维图图元元二维图元二维图元第11页,共53页,编辑于2022年,星期五图形变换n二维基本变换二维基本变换n二维组合变换二维组合变换n三维基本变换三维基本变换n三维组合变换三维组合变换n三视图的生成三视图的生成第12页,共53页,编辑于2022年,星期五二维基本变
8、换比例、对称比例、对称错切和旋转错切和旋转平移平移透视变换透视变换全比例全比例T=T=二维图形的基本变换包括以下几种:平移变换、比例变换、二维图形的基本变换包括以下几种:平移变换、比例变换、对称变换、旋转变换、错切变换对称变换、旋转变换、错切变换、透视变换透视变换统一的齐次变换矩阵形式:统一的齐次变换矩阵形式:点点(x x,y y),用用齐齐次次坐坐标标表表示示为为(x x,y y,1 1),点点在在二二维维空空间间里里的变换可写为:的变换可写为:xxy y1=x y 1T1=x y 1T3 33 3阶变换矩阵阶变换矩阵第13页,共53页,编辑于2022年,星期五平移变换第14页,共53页,编
9、辑于2022年,星期五比例变换讨论:讨论:(1)SxSy1 时时图形不变图形不变(2)SxSy 1 时时图形沿两轴方向等比例放大图形沿两轴方向等比例放大(3)SxSy 1 时时图形沿两轴方向等比例缩小图形沿两轴方向等比例缩小(4)Sx Sy 时时图形沿两轴方向作非均匀比例变换图形沿两轴方向作非均匀比例变换BACBACXYBCABACYX第15页,共53页,编辑于2022年,星期五对称变换:(1)bd0,a-1,e 1 时时x*-x,y*y,以以y 轴对称轴对称(2)bd0,a1,e-1 时时x*x,y*-y,以以x 轴对称轴对称(3)bd0,a e-1 时时x*-x,y*-y,以原点对称以原点
10、对称(4)bd1,ae 0 时时x*y,y*x,以以y=x 直线对称直线对称(5)bd-1,a e 0 时时x*-y,y*-x,以以y=-x 直线对称直线对称 第16页,共53页,编辑于2022年,星期五旋转变换逆时针:逆时针:顺时针:顺时针:第17页,共53页,编辑于2022年,星期五错切变换讨论:讨论:(1)d0 时时x*x+by,y*y,沿沿x 轴方向错切轴方向错切(2)b0时时x*x,y*dx+y,沿沿y 轴方向错切轴方向错切b 0,沿沿+x 轴方向错切位移轴方向错切位移b 0,沿沿-x 轴方向错切位移轴方向错切位移(3)b 0,d 0 时时同时沿两同时沿两 轴方向错切轴方向错切第18
11、页,共53页,编辑于2022年,星期五二维组合变换问题的提出问题的提出 对图形的基本变换只能相对坐标原点或者坐标轴进行。对图形的基本变换只能相对坐标原点或者坐标轴进行。而实际图形变换中常常是相对于任意点或线变换。那么如何才能实现图形在而实际图形变换中常常是相对于任意点或线变换。那么如何才能实现图形在二维平面内的任意变换呢?二维平面内的任意变换呢?解决问题的办法解决问题的办法 先将任意点先将任意点移向移向坐标原点、任意线移向与坐标原点、任意线移向与X X轴或轴或Y Y轴重合的位置;轴重合的位置;再利用基本变换矩阵进行变换;再利用基本变换矩阵进行变换;最后反向最后反向移回移回任意点(或任意线)。任
12、意点(或任意线)。组合变换组合变换 多个基本变换矩阵之积多个基本变换矩阵之积第19页,共53页,编辑于2022年,星期五 组合变换通常有三种情况:组合变换通常有三种情况:(1 1)图形相对于任一点作旋转变换)图形相对于任一点作旋转变换 (2 2)图形相对于任一点作比例变换)图形相对于任一点作比例变换 (3 3)图形相对于任一条线)图形相对于任一条线y=ax+by=ax+b对称的变换对称的变换 第20页,共53页,编辑于2022年,星期五(1)图形相对于任一点作旋转变换)图形相对于任一点作旋转变换 用三种变换组合而成:用三种变换组合而成:将旋转中心移到原点(平移);将旋转中心移到原点(平移);按
13、要求的角度方向旋转(旋转);按要求的角度方向旋转(旋转);将旋转后的图形平移到原来的旋转中心(平移)。将旋转后的图形平移到原来的旋转中心(平移)。设相对于(设相对于(e,f)点作旋转变换,则组合变换矩阵)点作旋转变换,则组合变换矩阵T为:为:第21页,共53页,编辑于2022年,星期五图图2-8 以点(以点(5,3)为中心旋转)为中心旋转60 例例 如如图图2-8所所示示三三角角形形abc,求求其其以以点点(5,3)为为中中心心旋旋转转60的复合变换矩阵。的复合变换矩阵。第22页,共53页,编辑于2022年,星期五第23页,共53页,编辑于2022年,星期五(2)图形相对于任一点作比例变换)图
14、形相对于任一点作比例变换 1)将比例中心移到原点(平移);)将比例中心移到原点(平移);2)按要求进行缩放(比例);)按要求进行缩放(比例);3)将缩放后的图形平移回原来的比例中心(平移)。)将缩放后的图形平移回原来的比例中心(平移)。设相对于(设相对于(e,f)点作比例变换,则组合变换矩阵:)点作比例变换,则组合变换矩阵:第24页,共53页,编辑于2022年,星期五(3)图图形形相相对对于于任任一一条条线线y=ax+b对对称称的的变变换换 用用5种种变变换换组组合合而成:而成:1)将直线沿)将直线沿y轴平移轴平移b,使其通过坐标原点,使其通过坐标原点,直线方程变为直线方程变为y=ax,见图,
15、见图2-10。变换矩阵为:。变换矩阵为:第25页,共53页,编辑于2022年,星期五2)将将直直线线y=axy=ax旋旋转转(或或11)角角,使使其其与与Y Y(或或X X)轴轴重重合合,变变为为x x(或或y y)=0=0。(=901,1=1=arctga)变变换换矩矩阵阵为:为:(或)(或)第26页,共53页,编辑于2022年,星期五3)作对)作对Y(或(或X)轴对称变换。变换矩阵为:)轴对称变换。变换矩阵为:(或)(或)第27页,共53页,编辑于2022年,星期五4)反向旋转,恢复直线)反向旋转,恢复直线y=ax。变换矩阵为:。变换矩阵为:(或)(或)5)反向平移,恢复直线)反向平移,恢
16、复直线y=ax+b,使对称轴回到原来位置。,使对称轴回到原来位置。变换矩阵为:变换矩阵为:第28页,共53页,编辑于2022年,星期五6)计算组合变换矩阵)计算组合变换矩阵而而注意:注意:先计算先计算 ,然后再按公式计算,然后再按公式计算 矩阵乘法通常不符合交换律矩阵乘法通常不符合交换律,复合变换矩阵的求解顺序不能任意复合变换矩阵的求解顺序不能任意变动。变动。Rotate2D(45);Translate2D(1,0);House();Translate2D(1,0);Rotate2D(45);House();第29页,共53页,编辑于2022年,星期五例例 求对直线求对直线xy+2=0(见图(
17、见图2-11)对称的组合变换矩阵。)对称的组合变换矩阵。求解步骤:求解步骤:(a)将直线右移)将直线右移+2与原点相交;与原点相交;(b)继续旋转)继续旋转45与与Y轴重合;轴重合;(c)对)对Y轴作对称变换;轴作对称变换;(d)反向旋转)反向旋转45;(e)左移)左移2,恢复原直线;,恢复原直线;图图2-11第30页,共53页,编辑于2022年,星期五总的变换矩阵总的变换矩阵 ,其中:,其中:则:则:第31页,共53页,编辑于2022年,星期五视窗变换WL,WBWR,WTXW,YW窗口窗口VL,VBVR,VTXS,YS视口视口比例变换比例变换平移变换平移变换a=(VR-VL)/(WR-WL)
18、c=(VT-VB)/(WT-WB)b=VL-WL*a d=VB WB*c第32页,共53页,编辑于2022年,星期五三维基本变换 点点(x x,y y,z z),用用齐齐次次坐坐标标表表示示为为(x x,y y,z z,1 1),点点在在三三维维空空间里的变换可写为:间里的变换可写为:xxy yz z1=x y z 1T1=x y z 1T比例、对称、比例、对称、错切和旋转错切和旋转透视变换透视变换平移平移全比例全比例4 44 4阶变换矩阵阶变换矩阵第33页,共53页,编辑于2022年,星期五平移变换第34页,共53页,编辑于2022年,星期五比例变换比例变换:比例变换:等比例变换:等比例变换
19、:第35页,共53页,编辑于2022年,星期五对称变换b b 相对相对YOZYOZ平面的平面的变换阵变换阵c c 相对相对XOZXOZ平面的平面的变换阵变换阵a a 相对相对XOYXOY平面平面的变换阵的变换阵第36页,共53页,编辑于2022年,星期五旋转变换绕绕 x 轴的旋转矩阵:轴的旋转矩阵:绕绕 y 轴的旋转矩阵:轴的旋转矩阵:绕绕 z 轴的旋转矩阵:轴的旋转矩阵:第37页,共53页,编辑于2022年,星期五错切变换 三维错切变换的变换矩阵为:三维错切变换的变换矩阵为:可见,当可见,当主对角线各元素均为主对角线各元素均为1 1,第,第4 4行和第行和第4 4列其它列其它元素均为元素均为
20、0 0,其余元素不全为,其余元素不全为0 0时,产生三维错切变换。时,产生三维错切变换。第38页,共53页,编辑于2022年,星期五三维组合变换绕空间任意轴规定角度的旋转变换:绕空间任意轴规定角度的旋转变换:思路:思路:将旋转轴转到将旋转轴转到 z 轴方向,对图形作绕轴方向,对图形作绕 z 轴的旋转变换轴的旋转变换后再转回原位置后再转回原位置例:例:设旋转轴由空间一点设旋转轴由空间一点A(xa,ya,za)及其方向数及其方向数(a,b,c)定义,定义,若空间一点若空间一点 P(xp,yp,zp)绕绕 该该 轴转轴转 q q 角到角到 P*(x*p,y*p,z*p),构造关系构造关系 x*p y
21、*p z*p 1 =xp yp zp 1.Ra其中,其中,Ra 为待求的变换矩阵为待求的变换矩阵A AP PP*P*B第39页,共53页,编辑于2022年,星期五解:解:(1)使坐标原点平移到使坐标原点平移到 A 点,即用平移矩阵作变换点,即用平移矩阵作变换a ab bc ca az zx xy yA AA AP PP*P*BB第40页,共53页,编辑于2022年,星期五b ba az zx xy y(2)绕绕 x 轴转轴转 a a 角,使角,使 B 落在落在 x-z 平面内平面内(3)绕绕 y 轴转轴转 b b 角,使角,使 B落在落在 z 轴上轴上BA第41页,共53页,编辑于2022年,
22、星期五(4)绕绕 z 轴转轴转 q q 角,使角,使 P 绕绕 A 旋转旋转 q q 角角z zx xy y(5)求求 Ry,Rx,TA 的逆变换的逆变换BA第42页,共53页,编辑于2022年,星期五(6):总的变换矩阵为:总的变换矩阵为:R Ra aT TA A.R Rx x.R Ry y.R Rz z.R R-1-1y y.R R-1-1x x.T T-1-1A A第43页,共53页,编辑于2022年,星期五投影变换一、投影变换的分类投影变换的分类:斜平行投影斜平行投影正平行投影正平行投影正投影正投影(三视图三视图)正轴测投影正轴测投影斜等测投影斜等测投影斜二测投影斜二测投影正等测投影正
23、等测投影 (三轴变形系数相等三轴变形系数相等)正二测投影正二测投影 (两轴向变形相等两轴向变形相等)正三测投影正三测投影 (三轴变形系数各不相同三轴变形系数各不相同)一点透视投影一点透视投影二点透视投影二点透视投影三点透视投影三点透视投影平行投影平行投影透视投影透视投影灭点灭点灭点灭点灭点灭点灭点灭点投影变换投影变换:将三维物体的图形变为二维图形表示的过程称为投影变换:将三维物体的图形变为二维图形表示的过程称为投影变换第44页,共53页,编辑于2022年,星期五三视图的生成(正投影)主视图主视图俯视图俯视图侧视图侧视图d第45页,共53页,编辑于2022年,星期五轴侧图的生成(斜平行投影)物体
24、先绕物体先绕Z轴旋转轴旋转,再绕,再绕X轴旋转角轴旋转角,然后向,然后向XOZ平面投影。平面投影。1)正等侧轴侧图正等侧轴侧图(=45=45,=3516=3516)2)正二侧轴侧图正二侧轴侧图(=2042=2042,=1928=1928)第46页,共53页,编辑于2022年,星期五上机作业 自选一个二维或三维组合体,利用高级语言编程实现图形自选一个二维或三维组合体,利用高级语言编程实现图形变换功能。变换功能。第47页,共53页,编辑于2022年,星期五图形变换例程(1)#include#include#include double R33,T33;/*R为复合变换矩阵,为复合变换矩阵,T为基本
25、变换矩阵为基本变换矩阵*/void idr2(void);/*单位矩阵单位矩阵*/void tran2(double tx,double ty);/*平移矩阵平移矩阵T*/void scale2(double sx,double sy);/*比例矩阵比例矩阵T*/void mult2(void);/*复合变换矩阵复合变换矩阵*/double coor2(double x,double y,double*pxy);/*计算图形变换后的坐标点计算图形变换后的坐标点*/void idr2(void)/*单位矩阵单位矩阵*/int i,j;for(i=0;i3;i+)for(j=0;j3;j+)Rij
26、=0;Rii=1;第48页,共53页,编辑于2022年,星期五图形变换例程(2)/*基本变换矩阵基本变换矩阵T*/void tran2(double tx,double ty)/*平移矩阵平移矩阵T*/int i,j;for(i=0;i3;i+)for(j=0;j3;j+)Tij=0;Tii=1;T20=tx;T21=ty;void scale2(double sx,double sy)/*比例矩阵比例矩阵T*/int i,j;for(i=0;i3;i+)for(j=0;j3;j+)Tij=0;T00=sx;T11=sy;T22=1;第49页,共53页,编辑于2022年,星期五图形变换例程(3
27、)/*R和和T相乘后得到的复合矩阵相乘后得到的复合矩阵*/void mult2(void)/*复合变换矩阵复合变换矩阵R*/int i,j,k;double rt,b33;for(i=0;i3;i+)for(j=0;j3;j+)rt=0;for(k=0;k3;k+)rt=rt+Rik*Tkj;bij=rt;for(i=0;i3;i+)for(j=0;j3;j+)Rij=bij;double coor2(double x,double y,double*pxy)/*计算图形变换后的坐标点计算图形变换后的坐标点*/pxy0=x*R00+y*R10+R20;pxy1=x*R01+y*R11+R21;
28、return*pxy;第50页,共53页,编辑于2022年,星期五图形变换例程(4)main()int n,m;int driver=DETECT,mode,MAXY;double x,y,sx,sy,tx,ty;double xy112=40,0,40,-8,-25,-8,-40,8,0,0,0,8,6,8,6,32,-6,24,-6,8,0,8;/*小船图形数据点小船图形数据点*/double pxy2=0,0;/*用于存放变换后的新坐标值用于存放变换后的新坐标值*/initgraph(&driver,&mode,);/*初始化图形环境初始化图形环境*/MAXY=getmaxy();/*获
29、得绘图区域获得绘图区域Y的最大值的最大值*/for(m=1;m=4;m+)/*画变换后的四条小船画变换后的四条小船*/idr2();/*单位矩阵单位矩阵R*/sx=pow(0.7,(m-1);sy=sx;/*每条小船依次进行比例变换每条小船依次进行比例变换sy=sx0.7*/scale2(sx,sy);/*比例变换矩阵比例变换矩阵T*/mult2();/*复合变换矩阵复合变换矩阵R*/tx=40*m;ty=tx;/*每条小船依次进行平移变换每条小船依次进行平移变换sy=sx0.7*/tran2(tx,ty);/*平移变换矩阵平移变换矩阵T*/mult2();/*复合变换矩阵复合变换矩阵R*/x
30、=xy40;y=xy41;coor2(x,y,pxy);/*计算变换后的起始点坐标计算变换后的起始点坐标*/moveto(pxy0,MAXY-pxy1);/*移到图形起始点移到图形起始点*/for(n=0;n11;n+)/*画变换后的小船画变换后的小船*/x=xyn0;y=xyn1;coor2(x,y,pxy);/*进行坐标变换,计算点进行坐标变换,计算点(x,y)变换后的坐标值变换后的坐标值(pxy0,pxy1)*/lineto(pxy0,MAXY-pxy1);getch();closegraph();第51页,共53页,编辑于2022年,星期五用VC实现步骤(1)1 1、新建一个、新建一个
31、MFC AppWizardexeMFC AppWizardexe工程文件。工程文件。选择选择file/new/projects/MFC AppWizardexefile/new/projects/MFC AppWizardexe,选择,选择locationlocation为存储路径,输入为存储路径,输入project name:transformproject name:transform。按。按OKOK后,弹出对话框,按后,弹出对话框,按finishfinish及及OKOK。第52页,共53页,编辑于2022年,星期五用VC实现步骤(2)2、添加代码。、添加代码。选取左框底部标签页选取左框底部标签页fileview,点击,点击transformview.cpp文件,在该文件中相应的位置添文件,在该文件中相应的位置添加代码,详见加代码,详见transformview.cpp中标有中标有/*的部分。的部分。3、编译运行。、编译运行。1)选择)选择build菜单,先菜单,先Compile后后Build,产生,产生EXE文件。文件。2)选择)选择build菜单,菜单,Execute编译好的编译好的EXE文文件即可。件即可。第53页,共53页,编辑于2022年,星期五