第六章三维变换与投影_第1页
第六章三维变换与投影_第2页
第六章三维变换与投影_第3页
第六章三维变换与投影_第4页
第六章三维变换与投影_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章第六章 n6.1 6.1 三维图形几何变换三维图形几何变换 n6.2 6.2 三维基本几何变换矩阵三维基本几何变换矩阵 n6.3 6.3 三维复合变换三维复合变换 n6.4 6.4 坐标系变换坐标系变换 n6.5 6.5 平行投影平行投影 n6.6 6.6 透视投影透视投影 n6.7 6.7 本章小结本章小结 同二维变换类似,三维变换同样引入了齐次坐标技 术,在四维空间(x,y,z,w)内进行讨论。定义了规范化 齐次坐标以后,三维图形几何变换就可以表示为物体顶 点集合的规范化齐次坐标矩阵与某一变换矩阵相乘的形 式。用规范化齐次坐标表示的三维图形几何变换矩阵是 一个44方阵,简称为三维几何

2、变换矩阵。 snml rihg qfed pcba T (6-1) snml rihg qfed pcba zyx zyx zyx zyx zyx zyx nnn nnn 1 1 1 1 1 1 222 111 2 2 2 1 1 1 TPP (6-2) 1 0100 0010 0001 zyx TTT T (6-3) (6-4) 1000 000 000 000 z y x S S S T (6-5) 1.1.绕绕x x轴旋转轴旋转 1000 0cossin0 0sincos0 0001 T (6-6) 2.2.绕绕y y轴旋转轴旋转 1000 0cos0sin 0010 0sin0cos

3、T (6-7) 3.3.绕绕z z轴旋转轴旋转 1000 0100 00cossin 00sincos T 为正向旋转角 1.1.关于关于x轴的反射轴的反射 1000 0100 0010 0001 T(6-8) 2.2.关于关于y轴的反射轴的反射 1000 0100 0010 0001 T (6-9) 3.3.关于关于z轴的反射轴的反射 1000 0100 0010 0001 T (6-10) 4.4.关于关于xoy面的反射面的反射 1000 0100 0010 0001 T (6-11) 5.5.关于关于yoz面的反射面的反射 (6-12) 6.6.关于关于xoz面的反射面的反射 (6-13

4、) 1000 0100 0010 0001 T 1000 0100 0010 0001 T 1000 01 01 01 hg fd cb T (6-14) 1.1.沿沿x方向错切方向错切 1000 010 001 0001 g d T (6-15) 2.2.沿沿y方向错切方向错切 (6-16) 1000 010 0010 001 h b T 3.3.沿沿z方向错切方向错切 (6-17) 1000 0100 010 001 f c T 三维图形几何变换 n TTTPTPP 21 T为复合变换矩阵,T1,T2Tn为n个单次基本几 何变换矩阵。 在三维基本几何变换中,比例变换和旋转变换是与参 考点相

5、关的。相对于任一参考点Q(x,y,z)的比例变换 和旋转变换应表达为复合变换形式。变换方法是首先 将参考点平移到坐标原点,相对于坐标原点作比例变 换或旋转变换,然后再进行反平移将参考点平移回原 位置。 相对于任意方向的变换方法是首先对任意方向做旋转 变换,使变换方向与某个坐标轴重合,然后对该坐标轴 进行三维基本几何变换,最后做反向旋转变换,将任意 方向还原到原来的方向。三维几何变换中需要进行两次 旋转变换,才能使任意方向与某个坐标轴重合。一般做 法是先将任意方向旋转到某个坐标平面内,然后再旋转 到与该坐标平面内的某个坐标轴重合。 01010110 zzyyxxPP cos cos cos 3

6、2 1 n n n 10P P 逆时针旋转角的分步变换矩阵。 在3个坐标轴上的方向余弦分别为,求空间一点 P(x,y,z)绕 例例6-1 已知空间矢量 P1 P0 (1) 将P0(x0,y0,z0)点平移到坐标原点 (2)将 1 0100 0010 0001 000 1 zyx T 10P P绕y轴顺时针旋转y角,与yoz平面重合 1000 0cos0sin 0010 0sin0cos 2 yy yy T (6-18) (6-19) 10P P(3) 将绕x轴逆时针旋转x角,与z轴重合 1000 0cossin0 0sincos0 0001 3 xx xx T (6-20) (4) 将P(x,

7、y,z)点绕z轴逆时针旋转角 1000 0100 00cossin 00sincos 4 T (6-21) (5)将绕x轴旋转-x角,即顺时针旋转x角 1000 0cossin0 0sincos0 0001 5 xx xx T (6-22) (6)将绕y轴旋转-y角,即逆时针旋转y 角 1000 0cos0sin 0010 0sin0cos 6 yy yy T (6-23) 10P P 10P P (7)将P0(x0,y0,z0)点平移回原位置 1 0100 0010 0001 000 7 zyx T 10P P将投影到y0的平面上,投影矢量为u 计算中间变量sinx、siny、cosx、co

8、sy u与z轴正向的夹角为y 10P P将投影到x0的平面上,投影矢量为v v与z轴正向的夹角为x 不需要计算x和y的值,只需计算其正弦值与余弦值, 就可以计算出变换矩阵T2、T3、T5和T6。 (6-24) 10P P y x v u 10P P cos 1 ncos 2 ncos 3 n 将 分别为 。取z轴上一单位矢量k 将其绕x轴顺时针旋转x角,再绕y轴逆时针旋转y角, 则单位矢量k将同单位矢量n重合,变换过程为 规范为单位矢量n,它在三个坐标轴上的投影 1000 0cos0sin 0010 0sin0cos 1000 0cossin0 0sincos0 0001 11001 321

9、yy yy xx xx nnn 1coscossinsincos yxxyx yx nsincos 1 x nsin 2 yx ncoscos 3 即, 可解得: cossin 2 n x(6-25) 22 cos1sin1cos xx 1 2 3 2 2 2 1 nnn1coscoscos 222 由,得到 222 coscoscos1则, 所以, 22 coscoscos x (6-26) 22 1 coscos cos cos sin x y n (6-27) 22 3 coscos cos cos cos x y n (6-28) 7654321 TTTTTTTT 。 将式(6-25)

10、(6-28)代入(6-19)、(6-20)、 (6-22)和(6-23)中,即可计算出T2、T3、T5和T6。 复合变换矩阵 在进行三维观察时,需要将物体的描述从世界坐标系 变换到观察坐标系,然后通过旋转视点可以观察物体的全 貌。 同一种变换既可以看作是点变换也可以看作是坐标系 变换。点变换是顶点位置发生改变,但坐标系位置不发生 改变。坐标系变换是建立新坐标系描述旧坐标系内的顶点, 坐标系位置发生改变,但顶点位置不发生改变。 P(1,1) P(3,3) P(3,3) (a) 原图 (b)点变换 (c)坐标系变换 1 010 001 yx TT T 平移变换矩阵 坐标系的旋转变换,应使用相反方向

11、的旋转变换矩 阵。如绕z轴的逆时针旋转变换,应使用顺时针旋转变 换矩阵,反之亦然。 坐标系反射变换相当于坐标系不动,点进行反射, 二者效果一致,坐标系变换的反射变换矩阵保持不 变。 100 0cossin 0sincos 100 0cos)sin( 0)sin(cos T (6-30) (6-29) 平移变换矩阵 1 0100 0010 0001 zyx TTT T (6-31) 相对于点变换而言,坐标系变换的平移参数需要取为负值。 绕x轴的逆时针三维旋转变换矩阵为 1000 0cossin0 0sincos0 0001 T (6-32) 同二维坐标系的旋转变换类似,三维坐标系的旋转变化 矩阵

12、应使用点变换的反向旋转变换矩阵表示。 绕y轴的逆时针三维旋转变换矩阵为 1000 0cos0sin 0010 0sin0cos T(6-33) 绕z轴的逆时针三维旋转变换矩阵为 1000 0100 00cossin 00sincos T (6-34) 为顺时针旋转角。 坐标系的三维反射变换,直接采用点变换的反射变换矩 阵 。 三点透视 二点透视 一点透视 透视投影 斜二测 斜等测 斜投影 正三测 正二测 正等测 正轴测投影 侧视图 俯视图 主视图 正交投影 正投影 平行投影 投影 投影变换分类 由于显示器只能用二维图像表示三维物体,因此三 维物体就要靠投影来降低维数得到二维平面图形,因此 把三

13、维坐标转变为二维坐标的过程称为投影变换。 根据投影中心与投影面之间的距离的不同,投影可 分为平行投影和透视投影。投影中心到投影面的距离为 无限大时得到的投影称为平行投影,而对于透视投影, 这个距离是有限的。平行投影又可分为斜投影和正交投 影。投影方向不垂直于投影面的平行投影称为斜投影, 投影方向垂直于投影面的平行投影称为正交投影。正交 投影的最大特点是无论物体距离视点(眼睛或摄像机) 多远,投影后的物体尺寸保持不变,常用于绘制物体的 三视图。 1000 0000 0010 0001 1101 zyxyxzyx 1000 0000 0010 0001 T 正交投影矩阵为 (6-35) 正交投影变

14、换 立方体正交投影 一个物体有6个视图:从物体的前面向后面投射所 得的视图称主视图,从物体的上面向下面投射所得的 视图称俯视图,从物体的左面向右面投射所得的视图 称侧视图,还有其它三个视图不是很常用。 V H W 正三棱柱的立体图 正三棱柱的三视图 1.主视图 将正三棱柱向yOz面做正交投影,得到主视图。 1000 0100 0010 0000 yozV TT 主视图变换矩阵为 (6-36) 2.俯视图 将正三棱柱向xOz面做正交投影得到俯视图。 1000 0100 0000 0001 xoz T 为了在yOz平面内表示俯视图,需要将xOz面绕z轴顺 时针旋转90,旋转变换矩阵为 投影变换矩阵

15、为 1000 0100 0001 0010 1000 0100 00) 2 cos() 2 sin( 00) 2 sin() 2 cos( Rz T 俯视图的变换矩阵为上述2个变换矩阵的乘积。 1000 0100 0001 0010 1000 0100 0000 0001 RzxozH TTT 1000 0100 0000 0010 T H (6-37) 3.侧视图 将正三棱柱向xOy面做正交投影得到侧视图。 投影变换矩阵为 1000 0000 0010 0001 xoy T 俯视图变换矩阵为 为了在yOz平面内表示侧视图,需要将xOy面绕y轴逆 时针旋转90,旋转变换矩阵为 1000 000

16、1 0010 0100 1000 0 2 cos0 2 sin 0010 0 2 sin0 2 cos Ry T 侧视图的变换矩阵为上面2个变换矩阵的乘积。 1000 0001 0010 0100 1000 0000 0010 0001 RyxoyW TTT 侧视图变换矩阵为 1000 0000 0010 0100 T W (6-38) 使用上述三视图变换矩阵绘制的三视图虽然位于都 同一平面内,但却彼此相连。这对于使用不同的视区单 独绘制主视图、俯视图和侧视图,不会产生影响。 三视图算法 但是对于仅使用一个视区绘制的三视图,必须将三 个视图分开。可以将三视图相对于原点各平移一段距离, 如图6-

17、10中的tx、ty、tz所示。这需要对三视图的变换 矩阵再施加平移变换。其中主视图的平移参数是(0,ty, tz),俯视图的平移参数是(0,-tx,tz),侧视图的平 移参数是(0,ty,-tx)。 主视图平移矩阵 10 0100 0010 0001 zy VT tt T 俯视图平移矩阵 10 0100 0010 0001 zx HT tt T 侧视图平移矩阵 10 0100 0010 0001 xy WT tt T 三视图平移矩阵 包含平移变换的三视图变换矩阵 10 0100 0010 0000 zy V tt T 10 0100 0000 0010 T H zx tt 10 0000 00

18、10 0100 T w xy tt , , (6-39) 下面3组三视图中,虽然主视图和侧视图完全相同,但 俯视图的细微差异导致了物体的三种不同结构。 将三维物体向投影面内作平行投影,但投影方向 不垂直于投影面得到的投影称为斜投影。与正交投影 相比,斜投影具有较好的立体感。斜投影也具有部分 类似正交投影的可测量性,平行于投影面的物体表面 的长度和角度投影后保持不变。 斜等测图 斜二测图 斜投影 P1(x,y,z) P2(x,y,0) P3(x,y,0) L 斜投影原理 斜投影 正投影 cot zL coscotcoszxLxx sincotsinzzLyy sincot coscot zyy

19、zxx (6-40) P 取45,当cot=1时,即投影方向与投影面成 =45的夹角时,得到的斜投影图为斜等测图。这 时,垂直于投影面的任何直线段的投影的长度保持不 变。将和代入式(6-40),有 2/ 2/ zyy zxx (6-42) 取45,当cot=1/2时,有63.4,得到的斜 投影图为斜二测图,这时,垂直于投影面的任何直线 段的投影的长度为原来的一半。将和代入式(6- 40),有 )22/( )22/( zyy zxx (6-43) 与平行投影相比,透视投影的特点是所有投影线都 从空间一点(称为视点或投影中心)投射,离视点近的 物体投影大,离视点远的物体投影小,小到极点消失, 称为

20、灭点(vanishing point)。一般将屏幕放在观察者 和物体之间。投影线与屏幕的交点就是物体上一点的透 视投影。视点代表人眼或照相机、摄像机的位置,是观 察坐标系的原点。视心是屏幕坐标系的原点。 视径R 屏幕 视点 物体 视距d 透视变换中屏幕的位置 透视投影变换中,物体中心位于世界坐标系Owxwywzw的 原点Ow,视点位于观察坐标系Ovxvyvzv的原点Ov(a,b,c), 投影中心位于屏幕坐标系Osxsyszs的原点Os。 透视变换坐标系 2.观察坐标系 世界坐标系Owxwywzw采用右手直角坐标系。坐标原点 位于Ow点,视点的直角坐标为Ov(a,b,c)。OwOv的长度 为视径

21、R,OwOv与y轴的夹角为,Ov点在xOz平面内的投 影为M(a,c),OwM与z轴的夹角为。视点的球面坐标表 示为Ov(R,)。视点的球面坐标和直角坐标的关系为 cossin cos sin sin Rc Rb Ra 0 20 (0R, ,) (6-44) 观察坐标系Ovxvyvzv为左手直角坐标系,坐标原点取 在视点Ov上。zv轴沿着视线方向OvOw指向Ow点,视线 的正右方为xv轴,视线的正上方为yv轴。 1.世界坐标系世界坐标系 3.屏幕坐标系 屏幕坐标系Osxsyszs也是左手直角坐标系,坐标原点 Os位于视心。屏幕坐标系的xs和ys轴与观察坐标系的xv轴 和yv轴方向一致,也就是说

22、屏幕垂直于视线,zs轴自然 与zv轴重合。 首先将世界坐标系的原点Ow平移到观察坐标系的原点 Ov,然后将世界右手坐标系变换为观察左手坐标系,就 可以实现从世界坐标系到观察坐标系的变换。这里使用 了坐标系变换的概念。 1.原点到视点的平移变换 1cossincossinsin 0100 0010 0001 1 0100 0010 0001 1 RRRcba T 平移变换 2.绕y1轴的旋转变换 将坐标系Ovx1y1z1先绕y1轴顺时针旋转180-角,使 z1轴位于OvPO平面内,形成新坐标系Ovx2y2z2。 1000 0cos0sin 0010 0sin0cos 1000 0)cos(0)s

23、in( 0010 0)sin(0)cos( 2 T 绕y1轴顺时针旋转变换 3.绕x2 轴的旋转变换 将坐标系Ovx2y2z2绕x2作90的逆时针旋转变 换,使z2轴沿视线方向,形成新坐标系Ovx3y3z3。 绕x2轴的逆时针旋转变换 1000 0sincos0 0cossin0 0001 1000 0) 2 cos() 2 sin(0 0) 2 sin() 2 cos(0 0001 3 T 4. 关于y3Ovz3面的反射变换 坐标轴x3作关于y3Ovz3面的反射变换,形成新坐 标系Ovxvyvzv,这样就将观察坐标系从右手系变换为 左手系,并且zv轴沿着视线方向指向Oxyz坐标系的原 点,x

24、v垂直指向纸面之内。 坐标系y3Ovz3面的反射变换 1000 0100 0010 0001 4 T 4321 TTTTTv 1000 0100 0010 0001 1000 0sincos0 0cossin0 0001 1000 0cos0sin 0010 0sin0cos 1cossincossinsin 0100 0010 0001 RRR Tv 观察变换矩阵 100 0cossincoscossin 0cossin0 0sinsinsincoscos R Tv (6-45) 展开式为 Rzyxz zyxy zx wwwv wwwv wv cossincossinsin coscossi

25、nsincos sincosxw (6-46) 为了避免程序中重复计算式(6-46)中的三角函数耗 费时间,三角函数可以使用常数代替。 sin 1 ksin 2 kcos 3 kcos 4 k 325 cossinkkk 126 sinsinkkk 347 coscoskkk 148 sincoskkk Rzkykxkz zkykxky zkxx wwwv wwwv wwv 546 728 13 k (6-47) 使用式(6-47)可以绘制物体的旋转变换动画。 改变,视点就会沿着纬度方向旋转;改变,视点就 会沿着经度方向旋转;增大视径R,视点到物体的距离 变远,物体的投影缩小;减小视径R,视点

26、到物体的距 离变近,物体的投影放大。相对而言,如果认为视点 不动,等同于物体反向旋转。请注意,此时虽然观察 到了物体的旋转或缩放,但物体在世界坐标系内的物 理位置并没有发生改变。由于还没有对物体实施透视 变换,物体投影的大小并未发生变化。观察坐标系只 是提供了一种从任意视向观察物体的方法。 void CTestView:InitParameter() k1=sin(PI*Theta/180); /初始化三角函数 k2=sin(PI*Phi/180); k3=cos(PI*Theta/180); k4=cos(PI*Phi/180); k5=k2*k3; k6=k2*k1; k7=k4*k3;

27、k8=k4*k1; ViewPoint.x=R*k6; /世界坐标系的视点球坐标 ViewPoint.y=R*k4; ViewPoint.z=R*k5; 5 4 6 kRc kRb kRa视点坐标使用k1k8统一表示为 (6-48) 屏幕坐标系为左手系,且zs轴与zv轴同向。视点 Ov与视心Os的距离为视距d。假定观察坐标系中物体 上的一点为Pv(xv,yv,zv),视线OvPv与屏幕的交点在 观察坐标系中表示为Ps(xs,ys,0)代表物体上的Pv点 在屏幕上的透视投影。 透视投影变换 由点Pv向xvOvzv平面内作垂线交于N点,再由N点向zv轴 作垂线交于Q点。连接OvN交xs轴于M点。

28、根据RtMOvOs与RtNOvQ相似,有 (6-49) (6-50) 根据RtPsOvM与RtPvOvN相似 ,有 (6-51) 由式(6-50)得到 (6-52) QO OO NQ MO v svs QO OO NO MO v sv v v NO MO NP MP v v v s QO OO NP MP v sv v s 将式(6-49)写成坐标形式 vv s z d x x (6-53) 将式(6-52)写成坐标形式 vv s z d y y (6-54) 于是有 v v s v v s z y dy z x dx (6-55) 透视变换矩阵为 0000 /1100 0010 0001 d

29、 Tp (6-56) 透视投影整体变换矩阵为 pv TTT d R D d d 000 cossin 0coscossin cos 0sin0 sinsin 0sincoscos (6-57) 0000 /1000 0010 0001 100 0cossincoscossin 0cossin0 0sinsinsincoscos d R void CTestView:PerProject(CP3 P) CP3 ViewP; ViewP.x=k3*P.x-k1*P.z; /观察坐标系三维点 ViewP.y=-k8*P.x+k2*P.y-k7*P.z; ViewP.z=-k6*P.x-k4*P.y-

30、k5*P.z+R; ScreenP.x=d*ViewP.x/ViewP.z;/屏幕坐标系二维点 ScreenP.y=Round(d*ViewP.y/ViewP.z); 小路的透视投影 透视投影中,与屏幕平行的平 行线投影后仍保持平行。不与 屏幕平行的平行线投影后汇聚 为灭点,灭点是无限远点在屏 幕上的投影。每一组平行线都 有其不同的灭点。坐标轴上灭 点称为主灭点。 透视投影中主灭点数目是由屏幕切割坐标轴的数量 来决定,并据此将透视投影分类为一点、二点和三点 透视。一点透视有一个主灭点,即屏幕仅与一个坐标 轴正交,与另外两个坐标轴平行;二点透视有两个主 灭点,即屏幕仅与两个坐标轴相交,与另一个坐

31、标轴 平行;三点透视有三个主灭点,即屏幕与三个坐标轴 都相交 (a)一点透视 (b)二点透视 (c)三点透视 1.一点透视 当90,0时,屏幕平行于xOz面,得 到一点透视图。 2.二点透视 当90,090时,屏幕与x轴和z 轴相交,但平行于y轴, 得到二点透视图。 3.三点透视 三点透视图是屏幕与三个坐标轴都相交时的透视投 影图。当0、90、180;且0、90、 180、270时,屏幕与x轴、y轴和z轴都相交,得到 三点透视图。将60、30代入式(6-57)。 立方体的三点透视投影图 对于透视投影,场景中所有投影均位于以视点为 顶点,连接视点与屏幕四角点为棱边的没有底面的四 棱锥内。当屏幕离

32、视点太近或太远时,物体因变得太 大或太小而不可识别。定义视域四棱锥的z向近剪切 面和远剪切面分别为Near和Far ,经zv向裁剪后的视 域四棱锥转化为四棱台。 透视投影的视景体 zvNear zvFar 平行投影的视景体 物体在屏幕坐标系中的深度计算公式为 NearFar zNear Farz v s 1 (6-61) 式中,Near和Far是常数,且Near就是视距d。透视变 换的一个重要性质是把直线映射为直线,平面映射为 平面。 图6-31坐标系相对关系图 在真实感场景中,三维物体的动画主要使用三维几 何变换来完成。透视投影是绘制真实感图形的基础,透 视投影是在观察坐标系内实施的。物体的

33、旋转动画可以 使用两种方法生成,一种方法是物体不动,视点旋转, 称为视图变换;另一种方法是物体旋转,视点不动,称 为模型变换。真实感光照场景中,由于世界坐标系中设 置了光源的位置,物体的旋转主要采用的是模型变换方 式,此时视点和光源位置不变,物体旋转生成动画。由 于本书配套的实践教程中主要采用双缓冲动画技术绘制 物体的透视投影,所以将不再细分一点透视、二点透视 和三点透视。 在三维屏幕坐标系中计算了物体透视投影的相对深 度,其绝对深度可以使用观察坐标系内的zv来表示, 由于观察坐标系内的zv值尚未进行透视变换,所以其 取值具有不规范等缺陷。通过分析近剪切面Near和 远剪切面Far的取值范围可以看出,对于观察坐标系 中的一个平面,在屏幕坐标系中可以选择无数多个平 面与之对应,Near与Far的具体数值一般通过试验确 定。 长方体如图6-32所示,8个坐标分别为(0,0,0), (2,0,0),(2,3,0),(0,3,0),(0,0,2),(2,0,2), (2,3,2),(0,3,2)。试对长方体进行Sx1/2,Sy 1/3,Sz1/2的比例变换,求变换后的长方体各顶点 坐标。 图6-32 长方体比例变换 2.四面体的顶点坐标为

温馨提示

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

评论

0/150

提交评论