网站大量收购独家精品文档,联系QQ:2885784924

7三维变换及三维观察.pptVIP

  1. 1、本文档共77页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
glTranslate{df}(x, y, z,): 把当前矩阵(如顶点坐标矩阵)与平移变换矩阵相乘。三个参数为x, y, z三个方向的平移量。如果参数值为浮点数,则函数名写为glTranslatef;参数值为双精度数,则函数名写为glTranslated; glRotate{df}(angle, x, y, z): 把当前矩阵(如顶点坐标矩阵)与旋转变换矩阵相乘。Angle参数表示旋转角度,从原点到点(x, y, z)的有向连线为旋转轴,逆时针方向为正角度方向。 OpenGL中的变换——模型视图变换 glScale{fd}(x, y, z,): 把当前矩阵(如顶点坐标矩阵)与比例变换矩阵相乘。三个参数分别为x, y, z三个方向的比例因子。 OpenGL中的变换——模型视图变换 OpenGL中的变换——模型视图变换 调用矩阵函数绘制模型视图时,后调用的矩阵将成为新的当前模型视图矩阵,并影响此后绘制的图形,会造成变换效果的累积。如果不需要这样的累积,可以调用重置矩阵函数: glLoadIdentity(void); 该函数将单位矩阵设置为当前变换矩阵。一般在指定当前操作矩阵对象后,都要调用重置矩阵函数,将之前变换的影响消除。 视图变换主要用于确定观察参考坐标系,即确定视点的位置和观察方向。 也可以通过函数gluLookAt调整视点位置,以达到观察立体不同侧面的效果。 gluLookAt(xe, ye, ze, xo, yo, zo, xu, yu, zu) 该函数有3组共9个参数,第一组3个参数,指定视点(相机镜头)在x、y、z三个方向的坐标;第二组3个参数指定视点(镜头)瞄准的点坐标;第三组3个参数,指定朝上的向量。(注意:朝上矢量不能与视线矢量重叠) OpenGL中的变换——模型视图变换 OpenGL中的变换——投影变换 OpenGL提供了两种投影方式:一种是正投影,一种是透视投影。通过调用不同的函数实现不同的投影变换。 为避免不必要的变换发生,必须调用 glMatrixMode(GL_PROJECTION) 指定当前处理的矩阵是投影变换矩阵。 例如: glMatrixMode (GL_PROJECTION); glLoadIdentity(); glOrtho (-3.0, 3.0, -3.0, 3.0, -10.0, 10.0); OpenGL中的变换——投影变换 一、正投影变换 正投影变换由函数glOrtho()实现。该函数创建一个正交平行的视景体。在该视景体中产生三维物体的平行投影。如果没有其它变换,比如旋转等,投影方向为z轴负方向。 glOrtho()函数创建了一个有限的观察空间,空间的六个边界面为裁剪面。 “轴测图”例程修改视景体裁剪面观察裁剪效果。 OpenGL中的变换——投影变换 二、透视投影变换 透视投影的特点是物体的视图有近大远小的效果。OpenGL透视投影函数有两个: 1. glFrustum(): 该函数指定的透视视景体 如图为所示。 glFrustum(left, right, bottom, top, near, far); 函数的六个参数分别定义了该视景体的left, right, bottom, top, near及 far的数值。 视点位于坐标系原点。 2. gluPerspective(): gluPerspective()函数指定投影变换方式为透视变换,通过不同的参数定义透视视景体。 下图为gluPerspective()函数指定的透视视景体。 视点位于坐标原点。 OpenGL中的变换——投影变换 gluPerspective()有4个参数: gluPerspective(fovy, aspect, near, far); fovy:为yoz平面上的视角,取值范围为[0.0, 180.0]; aspect:为视景体的纵横比; near和far:分别是观察点与视景体的前后裁剪面的距离。 OpenGL中的变换——投影变换 投影变换——OpenGL的三维坐标变换 例:太阳系(变换矩阵堆栈实现模型变换) glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); glPushMatrix(); glutWireSphere(1.0, 20, 20); /* draw sun */ glRotatef ((GLfloat) year, 0.0, 1.0, 0.0); glTranslatef (2.0, 0.0, 0.0); glRotatef ((GLfloat) day, 0.0, 1.0, 0.

文档评论(0)

178****9325 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档