计算机图形学cg08-三维观察.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 8.7 三维图形显示过程 三维图形显示过程 1、将三维坐标扩展为齐次坐标,(x,y,z)?(x,y,z,1); 2、进行模型变换; 3、进行观察变换; 4、进行视见体的规范化变换Npar或Nper; 5、除以h返回三维空间(有些情况下,h保持为1,所以不必做除法运算); 6、关于规范视见体进行裁剪; 7、将三维坐标扩展为齐次坐标; 8、进行投影变换Mort或Mper; 9、进行窗口至视区的变换; 10、除以h返回二维设备坐标系 ; 11、扫描转换(显示) * 8.8 OpenGL相关函数 观察变换函数 指定观察参数,生成一个矩阵并与当前模型观察矩阵合并 建模观察模式:glMatrixMode(GL_MODELVIEW) 指定观察参数: gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz) 如果不调用此函数,则默认 (1)eye=(0,0,0) (2)at=(0,0,-1) (3)up=(0,1,0) * 投影模式 建立投影变换矩阵:glMatrixMode(GL_PROJECTION) 设定当前投影矩阵 正投影函数 glOrtho(xmin, xmax, ymin, ymax, near, far) 或 glOrtho(left, right, bottom, top, near, far) (1)形成视见体 (2)near和far为从观察坐标系原点 沿负Z轴方向的距离 8.8 OpenGL相关函数 * 正投影函数(续) 默认参数:glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0) 是一对称规范化对称正方体 对二维而言, glOrtho2D建立裁剪窗口 如不指定投影函数,默认正投影来显示场景 8.8 OpenGL相关函数 zview yview xview 近裁剪面 远裁剪面 * 透视投影函数 (1)glFrustum( left, right, bottom, top, near, far) 前四个参数设定 近平面上裁剪窗 口的坐标 (OpenGL投影平面为近裁剪面) 8.8 OpenGL相关函数 * (2)gluPerspective(fovy,aspect,near,far) fovy:上下裁剪面间的夹角(0~180) aspect:裁剪窗口纵横比(宽度/高度) near:近裁剪面 far:远剪面 8.8 OpenGL相关函数 * 实例8-1:观察立方体 移动视点 旋转物体 8.8 OpenGL相关函数 * 8.8 OpenGL相关函数 #include stdlib.h #include GL/glut.h GLfloat vertices[][3] = {{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},{1.0,1.0,-1.0}, {-1.0,1.0,-1.0}, {-1.0,-1.0,1.0},{1.0,-1.0,1.0}, {1.0,1.0,1.0}, {-1.0,1.0,1.0}}; GLfloat colors[][3] = {{0.0,0.0,0.0},{1.0,0.0,0.0},{1.0,1.0,0.0}, {0.0,1.0,0.0}, {0.0,0.0,1.0},{1.0,0.0,1.0}, {1.0,1.0,1.0}, {0.0,1.0,1.0}}; void polygon(int a, int b, int c , int d) { glBegin(GL_POLYGON); glColor3fv(colors[a]); glVertex3fv(vertices[a]); glVertex3fv(vertices[b]); glVertex3fv(vertices[c]); glVertex3fv(vertices[d]); glEnd(); } * 8.8 OpenGL相关函数 static GLfloat theta[] = {0.0,0.0,0.0}; static GLint axis = 2; static GLdouble viewer[]= {0.0, 0.0, 5.0}; void color

文档评论(0)

676200 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档