新第5二三维图形生成和变换技术_第1页
新第5二三维图形生成和变换技术_第2页
新第5二三维图形生成和变换技术_第3页
新第5二三维图形生成和变换技术_第4页
新第5二三维图形生成和变换技术_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、王汝传 黄海平 林巧民 教材:计算机图形学王汝传等教材:计算机图形学王汝传等 编著编著 人民邮电出版社人民邮电出版社 计计 算算 机机 图图 形形 学学Computer Graphics 王汝传王汝传 W 第五章 目录 第五章 三维图形生成和变换技术 5.1 三维图形的概念 5.2 自由曲面的生成 5.3 三维图形的变换 5.4 三维图形裁剪和消隐 三维图形投影变换三维图形投影变换 通常图形输出设备(显示器、绘图仪等)通常图形输出设备(显示器、绘图仪等)都是二维的,用这些二维设备来输出三维图形都是二维的,用这些二维设备来输出三维图形,就得把三维坐标系下图形上各点的坐标转化,就得把三维坐标系下图

2、形上各点的坐标转化为某一平面坐标系下的二维坐标,也就是将(为某一平面坐标系下的二维坐标,也就是将(x x,y y,z z)变换为()变换为(xx,yy)或()或(xx,zz)或()或(yy,zz)。这种把三维物体用二维图)。这种把三维物体用二维图形表示的过程称为三维投影变换。这种变换方形表示的过程称为三维投影变换。这种变换方式有很多种,在实际中,根据不同目的或需要式有很多种,在实际中,根据不同目的或需要而采用不同的变换方式。而采用不同的变换方式。三维投影变换大致分类如图所示。三维投影变换大致分类如图所示。 平行投影是将物体上所有点都沿着一组平行线投影到投影平行投影是将物体上所有点都沿着一组平行

3、线投影到投影平面,而透视投影是所有点沿着一组汇聚到一个称为投影中平面,而透视投影是所有点沿着一组汇聚到一个称为投影中心的位置的线进行投影,两种方法如图所示。心的位置的线进行投影,两种方法如图所示。 投 影 平 面 投 影 平 面 (a)平 行 投 影 (b)透 视 投 影 图5.26 平 行 和 投 影 平 面 1 1正平行投影变换正平行投影变换 投影方向垂直于投影平面时称正平行投影。投影方向垂直于投影平面时称正平行投影。 (l l)正投影变换)正投影变换 在工程上将三维坐标系在工程上将三维坐标系OXYZOXYZ中的三个坐标平面分别为中的三个坐标平面分别为H H面(面(XOYXOY平面)、平面

4、)、V V面(面(XOZXOZ平面)和平面)和W W面(面(YOZYOZ平面)。如平面)。如图所示。图所示。 所谓正投影就是三维图形上各点分别向某一坐标平面作垂线所谓正投影就是三维图形上各点分别向某一坐标平面作垂线,其垂足便称为该三维点投影点,将所有投影点按原三维图形,其垂足便称为该三维点投影点,将所有投影点按原三维图形中点与点之间的对应关系一一连起来便得到了一平面图形,这中点与点之间的对应关系一一连起来便得到了一平面图形,这一平面图形称为三维图形在该平面上正投影。一平面图形称为三维图形在该平面上正投影。 如图所示。在如图所示。在V V面上的投影图形称主视图,在面上的投影图形称主视图,在H H

5、面上的投影图面上的投影图形称俯视图,在形称俯视图,在W W面上的投影图形称侧视图。面上的投影图形称侧视图。 正面(正面(V V面)投影主视图变换面)投影主视图变换 正面投影是物体在正面投影是物体在XOZXOZ平面上的投影,使物体的平面上的投影,使物体的y y坐标坐标都等于零,都等于零,x x和和z z坐标不变,其变换矩阵是:坐标不变,其变换矩阵是: zzyxxzyxzxTzyxTVV 0,11011000010000000001即即 水平面(水平面(H H面)投影俯视图变换面)投影俯视图变换 水平面投影是物体在水平面投影是物体在XOYXOY平面上投影,使物体的平面上投影,使物体的z z坐标坐标

6、都等于零,都等于零,x x和和y y坐标不变,其变换矩阵是:坐标不变,其变换矩阵是: 0,11011000000000100001 zyyxxzyxyxTzyxTHH即即 侧面(侧面( W W面)投影侧视图变换面)投影侧视图变换 侧面投影是物体在侧面投影是物体在YOZYOZ平面上投影,使物体的平面上投影,使物体的x x坐标坐标都等于零,都等于零,y y和和z z坐标不变,其变换矩阵是坐标不变,其变换矩阵是 zzyyxzyxzyTzyxTWW , 011011000010000100000即即 三视图三视图 上面投影后的三面投影图仍位于空间,根据工程中上面投影后的三面投影图仍位于空间,根据工程中

7、需要还须将需要还须将V V面,面,H H面,和面,和W W面上得到的三个正投影以一面上得到的三个正投影以一定方式展平在同一平面上而得到三个视图,习惯上是放定方式展平在同一平面上而得到三个视图,习惯上是放在在V V面上。面上。 为了在为了在V V面上构成三视图,使面上构成三视图,使V V面上投影保持不变,面上投影保持不变,而使而使H H面上正投影绕面上正投影绕X X轴逆转轴逆转9090到到V V面,为了防止与原面,为了防止与原V V面面上投影发生拥挤现象,再让它向轴方向平移一段距离上投影发生拥挤现象,再让它向轴方向平移一段距离n n。同样,使。同样,使w w面上正投影绕面上正投影绕Z Z轴正转轴

8、正转9090,再向轴方向移一,再向轴方向移一段距离段距离l l。以上立方体为例,以上立方体为例,V V面面上投影保持不变上投影保持不变FGEHZXYDCH H面上正投影绕面上正投影绕X X轴逆转轴逆转9090到到V V面面使使w w面上正投影面上正投影绕绕Z Z轴正转轴正转9090再向轴方向移再向轴方向移一段距离一段距离l l。为了防止与原为了防止与原V V面上投影面上投影发生拥挤现象,再让它向发生拥挤现象,再让它向轴方向平移一段距离轴方向平移一段距离n n。变换矩阵为:变换矩阵为: 1000010000000001VT 100000001000001100010000100001100009

9、0cos90sin0090sin90cos000011000000000100001nnTH 100010000010000100010000100001100001000090cos90sin0090sin90cos1000010000100000llTW得出三视图除上述方法外,还可以先将立方体绕坐标轴得出三视图除上述方法外,还可以先将立方体绕坐标轴X X(或(或Z Z)旋转)旋转9090,再平移,再平移n(n(或或l)l),最后作正投影变换。,最后作正投影变换。其实两种方法得到结果是一样。其实两种方法得到结果是一样。 所以,要求得一个三维实体在所以,要求得一个三维实体在V V面上的三视图,

10、必须将面上的三视图,必须将三维实体上各点分别乘以新的变换矩阵三维实体上各点分别乘以新的变换矩阵TV,TH,TWTV,TH,TW即:即: 1000010000000001VT 100000001000001nTH 100010000010001lTW(2 2)正轴测投影变换)正轴测投影变换 正轴测投影变换矩阵正轴测投影变换矩阵 若将空间立体绕某个投影面所包含的两个轴向旋转若将空间立体绕某个投影面所包含的两个轴向旋转,再向该投影面作正投影,即可获得立体正轴测图。通,再向该投影面作正投影,即可获得立体正轴测图。通常选用常选用V V面(面(XOZXOZ坐标平面)为轴测投影面,所以将立体坐标平面)为轴测

11、投影面,所以将立体绕绕Z Z轴正向旋转轴正向旋转角,再绕角,再绕X X轴反向旋转轴反向旋转角,最后向角,最后向V V面面作正投影。作正投影。 因此将绕因此将绕Z Z轴旋转变换矩阵轴旋转变换矩阵TZTZ,绕,绕X X轴旋转的变换矩轴旋转的变换矩阵阵TXTX和向和向V V面作正投影的变换矩阵面作正投影的变换矩阵TVTV连乘,即得到正轴测连乘,即得到正轴测变换矩阵:变换矩阵: 10000cos000sincos0sin0sinsin0cos100001000000000110000cossin00sincos000011000010000cossin00sincos VXZTTTT正正对于立体上任一

12、顶点对于立体上任一顶点A(x,y,z)A(x,y,z)正轴测变换投影结果为:正轴测变换投影结果为: 11cossincossinsin0sincos10000cos000sincos0sin0sinsin0cos1zyxzyxyxzyxTA 正正变换后点变换后点AA坐标为:坐标为: cos)sincossinsin(0,sincoszyxzyyxx 将将和和值代入正轴测变换矩阵值代入正轴测变换矩阵T T正,再将立体顶正,再将立体顶点位置矩阵乘此变换矩阵点位置矩阵乘此变换矩阵T T正,可获得立体顶点正轴测正,可获得立体顶点正轴测图位置矩阵,最后依次将各顶点连线,即可得到立体的图位置矩阵,最后依次

13、将各顶点连线,即可得到立体的正轴测图。选用不同正轴测图。选用不同和和值,可以产生不同的正轴测值,可以产生不同的正轴测图。图。 工程中常用的有正等测图、正二测图。工程中常用的有正等测图、正二测图。 对正六面体进行正轴测投影变换如下图所示:对正六面体进行正轴测投影变换如下图所示: (a)空间立体图 (b)立体正轴测图 图 5.30 立体正轴测投影 如图所示,进行轴测投影变换后,立体上原来的坐标轴如图所示,进行轴测投影变换后,立体上原来的坐标轴OXOX,OYOY,OZOZ变换成轴测图上轴测变换成轴测图上轴测OXOX,OYOY,OZOZ。下面我们讨论变换的轴向变形系数和轴间角。下面我们讨论变换的轴向变

14、形系数和轴间角。 图 5.31 轴向变形系数和轴间角 a a轴向变形系数轴向变形系数 取三根坐标轴上的点,它们的齐次坐标分别为取三根坐标轴上的点,它们的齐次坐标分别为Al 0 0 1Al 0 0 1,B B0 1 0 10 1 0 1,C C0 0 1 10 0 1 1,对它们分别进行正轴测投影变换得:对它们分别进行正轴测投影变换得: 11sinsin0cos10000cos000sincos0sin0sinsin0cos1001AzyxAaaa 11sincos0sin10000cos000sincos0sin0sinsin0cos1010BzyxBbbb 11cos0010000cos00

15、0sincos0sin0sinsin0cos1100CzyxCccc A,B,CA,B,C分别位于轴测轴分别位于轴测轴OX, OY, OZOX, OY, OZ上,故各轴的轴向变形系数为:上,故各轴的轴向变形系数为: cossincossin1sinsincos12222222222 czbbyaaxzOCCOzxOBBOzxOAAOb b轴间角轴间角 由上述由上述A,B,CA,B,C三点的变换可知,三点的变换可知,OZOZ轴和轴和OZOZ轴重合轴重合,设,设OXOX轴,轴,OYOY轴和水平轴的夹角分别为(见下图轴和水平轴的夹角分别为(见下图),则:),则: 图 5.31 轴向变形系数和轴间角

16、sinsinsincossincossinsinctgxztgtgxztgbbyaax 正等测投影变换正等测投影变换正等测投影为三根轴上变形系数相等的正轴测投影,即正等测投影为三根轴上变形系数相等的正轴测投影,即 由此可得:由此可得: 454590202cos, 0cos,9002cos2cos0sin12cos0)sin(cossin)sin(cossincossinsinsincoscossincossinsinsincos22222222222222222222 取取所所以以即即一一般般在在正正轴轴测测投投影影变变换换中中,可可得得:由由o2 10000816. 0000408. 007

17、07. 00408. 00707. 01635451635163533sin31sincossin2121cossincossin452222222正正等等正正得得正正等等测测投投影影变变换换矩矩阵阵代代入入,将将取取中中得得代代入入将将TT 30331635sin45sin30331635sin45sin8165. 01635cos yxxxzyxtgctgtgtgtgtg 轴轴间间角角:轴轴向向变变形形系系数数: (a)空 间 立 体 图 (b)正 等 测 图 图5.32正 等 测 投 影 如图如图 (b) (b)是图(是图(a a)的正等测图:)的正等测图: 正二测投影变换正二测投影变换

18、正二测投影一般取正二测投影一般取X X和和Z Z轴变形系数相等,且为轴变形系数相等,且为Y Y轴变形系轴变形系数的二倍,即数的二倍,即 zyx 2 22222222222222228194220432coscos43cos2coscos43)sin(cossin)sincoscossincos4sin4cossinsincos2 (得得:由由zyx25418819.02819sin422010712599.02819sin422047.02194.02819cos10000943.0000312.00354.00118.00935.0 yyxxxyzxctgtgtgtgTT 轴轴间间角角:轴轴

19、向向变变形形系系数数:得得:代代入入和和将将正正二二正正2 2斜平行投影(斜轴测投影)变换斜平行投影(斜轴测投影)变换 投影方向不垂直于投影面的平行投影称为斜平行投投影方向不垂直于投影面的平行投影称为斜平行投影,即斜轴测投影。这种投影可以通过三维空间形体的影,即斜轴测投影。这种投影可以通过三维空间形体的错切变换后作正投影获得。下面推导其变换矩阵。错切变换后作正投影获得。下面推导其变换矩阵。 (1 1)斜轴测投影变换矩阵)斜轴测投影变换矩阵 斜轴测投影是先将立体沿两个方向产生错切,再向投影斜轴测投影是先将立体沿两个方向产生错切,再向投影面作正投影而得到的。通常先沿面作正投影而得到的。通常先沿X

20、X含含Y Y错切,再沿错切,再沿Z Z含含Y Y错切,最错切,最后向后向XOZXOZ坐标平面投影而成,变换矩阵为:坐标平面投影而成,变换矩阵为: 100001000000011000010000000001100001000100001100001000010001fdfdTTTTVXX错错错错斜斜变换矩阵中元素变换矩阵中元素d d,f f取不同的值,即可得到任意的斜轴取不同的值,即可得到任意的斜轴测投影。测投影。d d,f f的正负可以改变斜轴测的方向。的正负可以改变斜轴测的方向。 Z轴向变形系数轴向变形系数 用与正轴测投影同样的方法,如图所示,对距原点用与正轴测投影同样的方法,如图所示,对

21、距原点为单位长度的点为单位长度的点 A A(1 0 0 11 0 0 1),),B B(0 1 0 10 1 0 1),C C(0 0 1 10 0 1 1)进行斜轴测投影变换。)进行斜轴测投影变换。 1010010000100100001110011010000100000001101011001100001000000011001CzyxfdCBzyxfdfdBzyxfdAcccbbbaaa 变换后变换后A A与与AA点重合,点重合,C C与以与以CC点重合,即点重合,即OXOX与与OXOX重合重合,OZOZ与与OZOZ重合。因此轴向变形系数为:重合。因此轴向变形系数为:1 zx 2222

22、fdzxbby 轴间角轴间角由上面对由上面对A A,B B,C C三点的变换可以看出,只有三点的变换可以看出,只有OYOY轴与水平轴轴与水平轴有一夹角有一夹角yy,如图所示,且,如图所示,且 dfxztgbby = (2) (2) 斜等测投影变换斜等测投影变换斜等测投影定义为:斜等测投影定义为: 即即145 zyxy 22145fddftg707.022 fd解解得得:d d和和f f的正负决定沿的正负决定沿X X轴和沿轴和沿Z Z轴错切方向,可视具体情况轴错切方向,可视具体情况而定。这样我们得到常用斜等测变换矩阵为:而定。这样我们得到常用斜等测变换矩阵为: 100001000707. 007

23、07. 00001斜等斜等T单位正六面体单位正六面体斜等测投影斜等测投影 (3 3)斜二测投影变换)斜二测投影变换 在斜轴测图中,常用的还有斜二测图,斜二测投影在斜轴测图中,常用的还有斜二测图,斜二测投影定义为:定义为: 即即21145 zzxy 222145fddftg354.081 fd解解得得: 在画斜二测投影图时,为了增强图形立体感,往往使立体在画斜二测投影图时,为了增强图形立体感,往往使立体沿沿Z Z方向错切,故方向错切,故f f取负值,而取负值,而d d的正负决定沿的正负决定沿X X轴错切方向,轴错切方向,可视具体情况而定。因此,斜二测投影变换矩阵为:可视具体情况而定。因此,斜二测

24、投影变换矩阵为: 100001000354. 00354. 00001斜二斜二Ty单位正六面体单位正六面体斜二测投影斜二测投影三维图形透视投影变换三维图形透视投影变换 透视投影属于中心投影,透视图也是一种将三维透视投影属于中心投影,透视图也是一种将三维物体用二维平面来表达的立体图。与轴测图不同,它物体用二维平面来表达的立体图。与轴测图不同,它是用中心投影法,通过空间一点(即投影中心)将立是用中心投影法,通过空间一点(即投影中心)将立体投射到投影面上所得到的投影图。如图所示:体投射到投影面上所得到的投影图。如图所示: 投影中心又称为投影中心又称为视点,它相当于视点,它相当于观察者的眼睛。观察者的

25、眼睛。 投影面置于视投影面置于视点与立体之间点与立体之间将立体上各点与视将立体上各点与视点相连所得到的投点相连所得到的投影线分别与投影面影线分别与投影面相交,其交点就是相交,其交点就是立体上相应点的透立体上相应点的透视投影,再将其依视投影,再将其依次相连,即获得具次相连,即获得具有真实立体感的透有真实立体感的透视图。视图。 透视投影可用矩阵变换方法获得,在透视投影可用矩阵变换方法获得,在4 4* *4 4阶变换矩阶变换矩阵中第四列元素阵中第四列元素p p,q q,r r称为透视参数,若赋其非零数称为透视参数,若赋其非零数值即形成透视变换矩阵值即形成透视变换矩阵 。 snmlrihgqfedpc

26、baT1 1点的透视变换点的透视变换 如图所示,在如图所示,在Y Y轴上取一点轴上取一点E E为视点,投影面取为视点,投影面取XOZXOZ面(面(V V面),面),A A(x x,y y,z z)与视点)与视点E E 的连线的连线AEAE与与V V面的面的交点为交点为A (x A (x ,y y ,z )z ),即为,即为A A 的透视投影的透视投影,同样,同样B B 的透视投影为的透视投影为B B ,C C 的透视投影为的透视投影为C C ,D D 的透视投影为的透视投影为D D 图5.38 透视投影坐标关系根据图可以找到空间点坐标与点的透视投影坐标的关系。根据图可以找到空间点坐标与点的透视

27、投影坐标的关系。因为因为DEBDEB与与DEBDEB相似,所以,相似,所以, 图5.38 透视投影坐标关系dyxxdydxx 1即即同理可得:同理可得:qyzzqyxxdqdyzzdydzz 1111,则则设设即即若用矩阵表示上述关系式,则有:若用矩阵表示上述关系式,则有: 轴轴上上透透视视变变换换矩矩阵阵为为视视点点在在令令面面变变换换向向透透视视变变换换YqTzyxqyzqyxqyzxVqzyxqzyxq 10000100010000111101)1 (0100001000000001110000100000000011000010001000011在在Y同理,视点在同理,视点在 X X轴

28、上透视变换矩阵轴上透视变换矩阵TpTp和视点在和视点在 Z Z轴上透轴上透视变换矩阵视变换矩阵TrTr分别为:分别为: 100010000100001100001000010001rTpTrp现将现将Y Y轴上无限远点轴上无限远点0 1 0 00 1 0 0(注意无限远点第四维(注意无限远点第四维齐次坐标为齐次坐标为0 0)作透视变换,其结果为:)作透视变换,其结果为: 10100101000010001000010010qqq 变换结果表明:变换结果表明:Y Y轴上的无限远点轴上的无限远点0 1 0 00 1 0 0进进行透视变换后成为有限远点行透视变换后成为有限远点0 l0 lq 0 1q

29、 0 1。由此。由此可以证明,原来平行于可以证明,原来平行于X X轴和轴和Z Z轴直线变换后仍平行于轴直线变换后仍平行于对应坐标轴,但原与对应坐标轴,但原与Y Y轴平行直线,变换后不再与轴平行直线,变换后不再与Y Y轴轴平行,而是汇交于平行,而是汇交于Y Y轴上一点(轴上一点(0 0,1 1q q,0 0),这个点),这个点称为透视的灭点。称为透视的灭点。 同理分别用透视变换矩阵同理分别用透视变换矩阵TpTp和和TrTr对对 X X轴和轴和 Z Z轴轴上无限远点进行透视变换后,所有平行于上无限远点进行透视变换后,所有平行于X X轴和轴和Z Z轴的轴的直线都应分别交于灭点(直线都应分别交于灭点(

30、l lp p,0 0,0 0)和()和(0 0,0 0,1 1r r) 2 2立体透视投影变换立体透视投影变换 和三维实体平行投影方法一样,只要将三维实体上各个和三维实体平行投影方法一样,只要将三维实体上各个点分别透视投影,再将投影后得到的各个点按原来点与点之点分别透视投影,再将投影后得到的各个点按原来点与点之间的关系用线段一一连接,便可得到三维实体的透视投影。间的关系用线段一一连接,便可得到三维实体的透视投影。 由前述可知,透视变换矩阵由前述可知,透视变换矩阵TpTp,TqTq和和TrTr分别改变了三维分别改变了三维实体中沿实体中沿X X方向方向Y Y方向以及方向以及Z Z方向的平行线段的平

31、行性,形成方向的平行线段的平行性,形成三个灭点(三个灭点(1/p1/p,0 0,0 0)、()、(0 0,l lq q,0 0)和()和(0 0,0 0,1 1r r)。然而,如果用)。然而,如果用Tp,TqTp,Tq和和TrTr中任意两个矩阵去作用三维实中任意两个矩阵去作用三维实体,那么就会改变三维实体沿两个坐标轴方向的平行线段的体,那么就会改变三维实体沿两个坐标轴方向的平行线段的平行性,并形成两个灭点。同样地,如果用三个矩阵平行性,并形成两个灭点。同样地,如果用三个矩阵TpTp,TqTq和和TrTr一同作用于三维实体,那么就会改变三维实体中沿三个一同作用于三维实体,那么就会改变三维实体中沿

32、三个坐标轴方向的平行线段平行性,并形成三个灭点。所以,根坐标轴方向的平行线段平行性,并形成三个灭点。所以,根据透视投影中灭点多少又可分为一点透视、二点透视和三点据透视投影中灭点多少又可分为一点透视、二点透视和三点透视。透视。(1 1)一点透视)一点透视 一点透视就是只有一个灭点的透视,一般采用透一点透视就是只有一个灭点的透视,一般采用透视变换矩阵视变换矩阵TqTq作为一点透视的透视变换矩阵。对于图作为一点透视的透视变换矩阵。对于图所示立方体作透视变换后,只有一个方向的棱线汇交所示立方体作透视变换后,只有一个方向的棱线汇交于灭点,其它两个方向的棱线仍是相互平行的。于灭点,其它两个方向的棱线仍是相

33、互平行的。 平行于平行于Y Y轴方向棱线轴方向棱线交于一点,平行于交于一点,平行于X,ZX,Z轴方向棱线平行轴方向棱线平行为了使透视投影后的图具有立体感,我们在透视投影为了使透视投影后的图具有立体感,我们在透视投影变换之前,要对三维实体先作平移变换,其沿着变换之前,要对三维实体先作平移变换,其沿着X X方向方向、Y Y方向和方向和Z Z方向的平移量分别为方向的平移量分别为l l、m m、n n,然后再进行,然后再进行透视变换,最后再向透视变换,最后再向V V面作正投影,其一点透视投影变面作正投影,其一点透视投影变换矩阵为:换矩阵为: 100100000000110000100000000011

34、0000000010000110100001000011mqnlqVqnmlT面正投影变换面正投影变换向向透视变换透视变换平移变换平移变换(2 2)二点透视)二点透视 二点透视就是具有两个灭点的透视,一般以二点透视就是具有两个灭点的透视,一般以TpTp和和TqTq作为作为二点透视的透视变换矩阵。对立方体作透视变换后,除垂直二点透视的透视变换矩阵。对立方体作透视变换后,除垂直方向棱线互相平行外,另外两个方向的棱线分别汇交于灭点方向棱线互相平行外,另外两个方向的棱线分别汇交于灭点。 (a)空间主体 (b)二点透视投影 图 5.40 二点透视 平行于平行于X,YX,Y轴方向棱轴方向棱线交于一点,平行

35、于线交于一点,平行于Z Z轴方向棱线平行轴方向棱线平行 为了使二点透视后的投影有一恰当的位置,通常为了使二点透视后的投影有一恰当的位置,通常对立体进行平移、透视、绕对立体进行平移、透视、绕Z Z轴转轴转角,于是总的变换角,于是总的变换矩阵矩阵T2T2为:为: 10sincos010000sin00cosV10000100000000011000010000cossin00sincos1000010001000110100001000012mqlpnmlqpZqpnmlT 面面正正投投影影变变换换向向轴轴旋旋转转变变换换绕绕透透视视变变换换平平移移变变换换为了增加透视图立体感,一般取为了增加透视

36、图立体感,一般取p0,q0p0,q0 (3 3)三点透视)三点透视 三点透视就是有三个灭点的透视。对立方体作透三点透视就是有三个灭点的透视。对立方体作透视变换后三个方向的棱线分别交汇于三个不同的灭点视变换后三个方向的棱线分别交汇于三个不同的灭点, 三点透视首先将对立体进行平移,然后再进行透三点透视首先将对立体进行平移,然后再进行透视变换,接着将变换后立体绕视变换,接着将变换后立体绕Z Z 轴和轴和X X轴分别旋转轴分别旋转11和和22角,最后向角,最后向V V面正投影。其变换矩阵为:面正投影。其变换矩阵为: 1cos)cossin(sin0sincoscos00sincos0sinsinsin

37、0cosXZ100001000000000100000cossin00sincos000011000010000cossin00sincos100010001000110100001000012112112211211222211113nrmplpnmlmlrqpVrqpnmlT 面面作作正正投投影影向向轴轴旋旋转转变变换换绕绕轴轴旋旋转转变变换换绕绕透透视视变变换换平平移移变变换换第五章第五章 三维图形生成和变换技术三维图形生成和变换技术 5.1 5.1 三维图形的概念三维图形的概念 5.2 5.2 自由曲面的生成自由曲面的生成 5.3 5.3 三维图形变换三维图形变换 5.4 5.4 三维

38、图形剪裁和消隐技术三维图形剪裁和消隐技术 5.4 5.4 三维图形裁剪和消隐技术三维图形裁剪和消隐技术 一、三维图形裁剪一、三维图形裁剪1 1、概述、概述 在二维图形裁剪过程中,图形视见区域是一个矩在二维图形裁剪过程中,图形视见区域是一个矩形窗口,落在此窗口内图形均可在屏幕视图区中显示输形窗口,落在此窗口内图形均可在屏幕视图区中显示输出;而在三维观察空间内,物体的视见区域是一个三维出;而在三维观察空间内,物体的视见区域是一个三维区域,和二维平面中定义窗口相类似,我们也可以在三区域,和二维平面中定义窗口相类似,我们也可以在三维空间中定义一个子空间,并称这个子空间为三维窗口维空间中定义一个子空间,

39、并称这个子空间为三维窗口。 常用的三维窗口有两种形状:一种是平行投影立方体三常用的三维窗口有两种形状:一种是平行投影立方体三维窗口;另一种是透视投影的棱台。维窗口;另一种是透视投影的棱台。 组成三维窗口的六个面,把整个三维空间分割成两组成三维窗口的六个面,把整个三维空间分割成两部分:窗口内部分和窗口外部分。把落在窗口内的立体部分:窗口内部分和窗口外部分。把落在窗口内的立体或部分立体从整个空间的立体群中分离出来,这就是三或部分立体从整个空间的立体群中分离出来,这就是三维裁剪所要做的工作。维裁剪所要做的工作。 三维裁剪的过程包含两个基本阶段,第一阶段是几三维裁剪的过程包含两个基本阶段,第一阶段是几

40、何处理阶段,在这个阶段中所做工作是用窗口平面去裁何处理阶段,在这个阶段中所做工作是用窗口平面去裁切立体。第二阶段是拓扑处理阶段,在这个阶段中所要切立体。第二阶段是拓扑处理阶段,在这个阶段中所要做工作是把经截切后残留下来的信息重新组成新的立体做工作是把经截切后残留下来的信息重新组成新的立体模型。模型。 在三维图形处理中,只有经过三维裁剪后,才能对在三维图形处理中,只有经过三维裁剪后,才能对经裁剪后保留下来的立体进行消隐处理,最后送去作二经裁剪后保留下来的立体进行消隐处理,最后送去作二维图形显示。维图形显示。 2 2、三维编码裁剪法、三维编码裁剪法 如图所示,立方体裁剪窗口六个面的方程分别是:如图

41、所示,立方体裁剪窗口六个面的方程分别是: -x-1=0-x-1=0 x-1=0 x-1=0-y-1=0-y-1=0y-1=0y-1=0-z-1=0-z-1=0z-1=0z-1=0 空间任意两点空间任意两点p1(x1,y1,z1)p1(x1,y1,z1)和和p2(x2,y2,z2)p2(x2,y2,z2)。直线段。直线段p1p2p1p2端点和六个面的关系可转换为一个端点和六个面的关系可转换为一个6 6位二进制代码表示,位二进制代码表示,其定义如下:其定义如下: 第第1 1位为位为1 1:点在裁剪窗口的上面,即:点在裁剪窗口的上面,即y y1 1; 第第2 2拉为拉为1 1:点在裁剪窗口的下面,即

42、:点在裁剪窗口的下面,即y y-l-l; 第第3 3位为位为1 1:点在裁剪窗口的右面,即:点在裁剪窗口的右面,即x x1 1; 第第4 4位为位为1 1:点在裁剪窗口的左面,即:点在裁剪窗口的左面,即x x-1-1; 第第5 5位为位为1 1:点在裁剪窗口的后面,即:点在裁剪窗口的后面,即z zl l; 第第6 6位为位为1 1;点在裁剪窗口的前面,即;点在裁剪窗口的前面,即z z-1-1。 如同二维线段对矩形窗口的编码裁剪算法一样,若一条如同二维线段对矩形窗口的编码裁剪算法一样,若一条线段的两端点的编码都是零,则线段落在窗口的空间内;若线段的两端点的编码都是零,则线段落在窗口的空间内;若两

43、端点编码的逻辑与(逐位进行)为非零,则此线段在窗口两端点编码的逻辑与(逐位进行)为非零,则此线段在窗口空间以外;否则,需对此线段作分段处理,即要计算此线段空间以外;否则,需对此线段作分段处理,即要计算此线段和窗口空间相应平面的交点,并取有效交点。和窗口空间相应平面的交点,并取有效交点。 对任意一条三维线段的参数方程可写成:对任意一条三维线段的参数方程可写成: 1 , 0)()()(1121121121 ttrztzzzztqyyyyytpxtxxxx裁剪空间六个平面方程的一般表达式为:裁剪空间六个平面方程的一般表达式为: 0 dczbyax把直线方程代入平面方程,求得:把直线方程代入平面方程,

44、求得: )()(111crdqapdzbyaxt 如求一条直线与裁剪空间上平面的交点,即将如求一条直线与裁剪空间上平面的交点,即将y-1=0y-1=0代入代入,得,得 :如如t t不在不在O O 到到1 1的闭区间内,则交点在裁剪空间以外;否的闭区间内,则交点在裁剪空间以外;否则将则将t t代人直线方程可求得:代人直线方程可求得:qyt)1(1 pqyxx 111rqyzz 111这时三维线段与裁剪窗口的有效点为这时三维线段与裁剪窗口的有效点为)1,1,1(1111pqyzpqyx 类似地可求得其它五个面与直线段的有效交点。连接有类似地可求得其它五个面与直线段的有效交点。连接有效交点可得到落在

45、裁剪窗口内的有效线段。效交点可得到落在裁剪窗口内的有效线段。 对于透视投影的棱台其方法类似,请自行推导。对于透视投影的棱台其方法类似,请自行推导。 3 3三维中点分割裁剪法三维中点分割裁剪法 前面讨论的二维中点分割裁剪方法可以直接推广到前面讨论的二维中点分割裁剪方法可以直接推广到三维,其原理和过程是完全相同的。对于平行投影和透三维,其原理和过程是完全相同的。对于平行投影和透视投影,仅仅是线段编码的处理和线段与体表面的交点视投影,仅仅是线段编码的处理和线段与体表面的交点计算不同,其它部分则完全相同。计算不同,其它部分则完全相同。三维图形的消隐三维图形的消隐 1 1消隐技术概述消隐技术概述 在现实

46、世界中,当我们观察空间任何一个在现实世界中,当我们观察空间任何一个不透明的物体时,只能看到物体上朝向我们的不透明的物体时,只能看到物体上朝向我们的那部分表面,而其余的表面(物体背面)是不那部分表面,而其余的表面(物体背面)是不可能被我们看见的。在用计算机生成立体图形可能被我们看见的。在用计算机生成立体图形时,若将物体的所有部分都表现出来,不管是时,若将物体的所有部分都表现出来,不管是可见的还是不可见的,这样的图形所表示的物可见的还是不可见的,这样的图形所表示的物体形状是不清楚的,甚至是不确定的。体形状是不清楚的,甚至是不确定的。 图 5.43 立方体线框图和消隐图 是一个立方体的线条是一个立方

47、体的线条画,它的所有的边均画,它的所有的边均无一遗落,全部画出无一遗落,全部画出,可以有两种解释。,可以有两种解释。 从立方体的左从立方体的左上方向下看上方向下看 从立方体的右从立方体的右下方向上看下方向上看 为了得到一个确定的、立体感强的投影图,就需要消除为了得到一个确定的、立体感强的投影图,就需要消除隐藏线和隐藏面,也就是在给定的投影图中,确定物体隐藏线和隐藏面,也就是在给定的投影图中,确定物体哪些边、面是可见的,消除那些不可见的棱线和表面,哪些边、面是可见的,消除那些不可见的棱线和表面,这就是所谓消隐问题。消隐问题是计算机领域的难题之这就是所谓消隐问题。消隐问题是计算机领域的难题之一。目

48、前,虽已提出了多种算法,但仍吸引着人们探索一。目前,虽已提出了多种算法,但仍吸引着人们探索新的更有效的解决方法。而这方面研究工作又主要是寻新的更有效的解决方法。而这方面研究工作又主要是寻求正确可靠、占用存储空间少、运算速度快的消隐算法求正确可靠、占用存储空间少、运算速度快的消隐算法。 所有的隐线、隐面消除算法均和某种排序算法有关所有的隐线、隐面消除算法均和某种排序算法有关。排序的主要依据是被显示的点、线、面或体与观察点。排序的主要依据是被显示的点、线、面或体与观察点之间的几何距离。之间的几何距离。 一个显示对象离观察点越远,那么它越是可能被一个显示对象离观察点越远,那么它越是可能被其他物体所遮

49、挡,这是排序的基本前提。当然,在确其他物体所遮挡,这是排序的基本前提。当然,在确定了不同的对象离观察点的不同距离以后,还要对它定了不同的对象离观察点的不同距离以后,还要对它们在们在x x方向和方向和y y方向进行比较,以确定某个较远的对象方向进行比较,以确定某个较远的对象实际上是否真的被较近的对象所遮挡。实际上是否真的被较近的对象所遮挡。 提高效率的主要途径是充分利用画面的相关性,提高效率的主要途径是充分利用画面的相关性,也就是画面的某些性质在一些相邻的局部区域中是相也就是画面的某些性质在一些相邻的局部区域中是相同的或者相差甚微这一特征。同的或者相差甚微这一特征。 消隐算法一般可以分为两类,区

50、分的依据是消隐算消隐算法一般可以分为两类,区分的依据是消隐算法是在哪种空间中实现的。法是在哪种空间中实现的。物体空间算法:算法是在描述要显示对象的物理坐标系物体空间算法:算法是在描述要显示对象的物理坐标系 中实现的中实现的图像空间算法:算法是在显示图形的屏幕坐标上实现的图像空间算法:算法是在显示图形的屏幕坐标上实现的 物体空间算法有比较高的精度,生成的图形即使物体空间算法有比较高的精度,生成的图形即使放大一定倍数后仍有令人满意的观感,因此在比较精放大一定倍数后仍有令人满意的观感,因此在比较精密的对象显示方面有较多的应用。密的对象显示方面有较多的应用。 图像空间的算法在精度上不及前者,它最多到屏

51、幕图像空间的算法在精度上不及前者,它最多到屏幕分辨率时就无法再提高精度,但计算效率较高,因为在分辨率时就无法再提高精度,但计算效率较高,因为在图像空间中各种相关性可以得到充分应用,所以也有许图像空间中各种相关性可以得到充分应用,所以也有许多方法是在图像空间中实现的。多方法是在图像空间中实现的。2 2几种消隐方法几种消隐方法(l l)背面消除)背面消除 背面消除虽不是一个完整的隐面消除方法,但它是隐面消除算背面消除虽不是一个完整的隐面消除方法,但它是隐面消除算法中的关键部分。在消隐问题中,单个凸多面体是最简单情形。法中的关键部分。在消隐问题中,单个凸多面体是最简单情形。凸多面体是这样形体:连接形

52、体上不属于同一表面的任意两点的凸多面体是这样形体:连接形体上不属于同一表面的任意两点的线段完全位于形体的内部。对于单个凸多面体背面消除即可达到线段完全位于形体的内部。对于单个凸多面体背面消除即可达到隐面消除的目的。隐面消除的目的。 假设给定视点位置,为了决定一个面相对于视点为可见还是不假设给定视点位置,为了决定一个面相对于视点为可见还是不可见,以图为例予以说明。可见,以图为例予以说明。定义垂直于物体平面且背离物定义垂直于物体平面且背离物体的直线向量为平面法线向量体的直线向量为平面法线向量,定义从视点到物体表面上任,定义从视点到物体表面上任一点直线方向为视线向量方向一点直线方向为视线向量方向,那

53、么利用这两个矢量之间夹,那么利用这两个矢量之间夹角可以进行背面测试,只有当角可以进行背面测试,只有当两个矢量之间夹角小于两个矢量之间夹角小于90O90O时时面为可见面。面为可见面。如图所示,在某一表面内取两个向量如图所示,在某一表面内取两个向量p p(plpl,p2p2,p3p3)和)和q q(q1q1,q2q2,q3q3),它们向量积),它们向量积p p* *q q是一个与该向量所确定的平面垂是一个与该向量所确定的平面垂直的法向量直的法向量n =pn =p* *q q,n n方向由右手法则定义,食指指向方向由右手法则定义,食指指向p p的方向的方向,中指指向,中指指向q q的方向,姆指所指的

54、方向则是的方向,姆指所指的方向则是n n的方向。的方向。为了得到符合上述要求的为了得到符合上述要求的p p和和q q,对所要考虑的表面按逆时针方,对所要考虑的表面按逆时针方向取出向取出2 2、3 3、8 8号三个顶点,由号三个顶点,由2 2号点到号点到3 3号点决定号点决定p p,由,由2 2号点号点到到8 8号点决定号点决定q q,根据,根据2 2、3 3、8 8号顶点坐标容易算出号顶点坐标容易算出p p和和q q的各分的各分向量向量p1p1、p2p2、p3p3和和q1q1、q2q2、q3q3。根据根据p p和和q q,就可算出,就可算出n n因为,因为, n = p n = p* *q q

55、 n = (n1,n2,n3) n = (n1,n2,n3)所以所以 nl = p2q3 nl = p2q3 q2p3 q2p3 n2 = p3q1 n2 = p3q1 q3p1 q3p1 n3 = p1q2 n3 = p1q2 q1p2 q1p2 视线向量视线向量v v(v1,v2,v3v1,v2,v3),由视点和),由视点和2 2号坐标可求分向号坐标可求分向量量v1,v2v1,v2和和v3v3 法向量法向量n n和视线向量和视线向量v v之间夹角有如下关系:之间夹角有如下关系: v v n =vncos n =vncos 由于模总是正的,所以数量积由于模总是正的,所以数量积v nv n符号

56、只取决于符号只取决于coscos。这就是说,如果能够算得数量积。这就是说,如果能够算得数量积v nv n,便可根据它的正负,便可根据它的正负号判定号判定大小范围,若数量积大于大小范围,若数量积大于0 0,则,则9090。,否则。,否则9090。如前所述,。如前所述,9090。 时表示表面可见,否则为不时表示表面可见,否则为不可见。数量积的计算可按下式进行:可见。数量积的计算可按下式进行:v v n = v1n1 + v2n2 + v3n3n = v1n1 + v2n2 + v3n3 综上所述,为了决定一个凸多面体的不可见面,对综上所述,为了决定一个凸多面体的不可见面,对于每一个面进行以下几个工

57、作:于每一个面进行以下几个工作:求平面的法向量求平面的法向量n n ;求平面的视线向量求平面的视线向量v v ;计算计算vn vn ;根据根据vnvn符号判别该面是否可见。符号判别该面是否可见。 对于单一的凸多面体而言,背面消除完全可以消除对于单一的凸多面体而言,背面消除完全可以消除不可见面,而对于多个物体组成的复杂体,仅仅经过背不可见面,而对于多个物体组成的复杂体,仅仅经过背面消除是不够的,还需作进一步测试。但是,背面消除面消除是不够的,还需作进一步测试。但是,背面消除是一个关键的步骤,简单地经过这个过程就可以消去大是一个关键的步骤,简单地经过这个过程就可以消去大约约50%50%的隐藏面。的

58、隐藏面。(2 2)深度缓冲器法)深度缓冲器法 深度缓冲器法是图像空间中一种常用的方法这种深度缓冲器法是图像空间中一种常用的方法这种方法的基本思想是:对于显示屏上的每一个像素点(方法的基本思想是:对于显示屏上的每一个像素点(x x,y y),测试一系列平面,记录下位于此像素投射线上),测试一系列平面,记录下位于此像素投射线上最靠近观察点的平面的深度。除了深度外,一般还需记最靠近观察点的平面的深度。除了深度外,一般还需记录下用以显示此对象的亮度值。录下用以显示此对象的亮度值。 一般的深度缓冲器算法采用两个数组,一个用来记一般的深度缓冲器算法采用两个数组,一个用来记录每一个像素点的深度值,一个用来记

59、录此像素点所对录每一个像素点的深度值,一个用来记录此像素点所对应的亮度值。应的亮度值。深度缓冲器算法的过程:深度缓冲器算法的过程:1 1)对于屏幕上每一个像素点()对于屏幕上每一个像素点(x x,y y),置深度缓冲器),置深度缓冲器DepthxyDepthxy为一较大值,置亮度缓冲器为背景值;为一较大值,置亮度缓冲器为背景值; 2 2)对于景中的每个多边形,找出多边形投影到屏上时)对于景中的每个多边形,找出多边形投影到屏上时位于其边界内的全部像素(位于其边界内的全部像素(x x,y y)。对于这些像素计算)。对于这些像素计算出 此 多 边 形 在 (出 此 多 边 形 在 ( x x , y

60、 y ) 处 的 深 度) 处 的 深 度 z z ; 如 果; 如 果 z z DepthxyDepthxy,此多边形相对于其它多边形在(,此多边形相对于其它多边形在(x x,y y)处更靠近观察者,所以置处更靠近观察者,所以置Depthxy=zDepthxy=z,置亮度数组,置亮度数组为该多边形的亮度值。如果为该多边形的亮度值。如果z zDepthxyDepthxy,说明该多,说明该多边形在此像素点处被其它多边形隐藏,所以不采取任何边形在此像素点处被其它多边形隐藏,所以不采取任何行动。行动。 当对所有像素进行扫描后,深度缓冲器和亮度缓冲器当对所有像素进行扫描后,深度缓冲器和亮度缓冲器分别包

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论