- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenGL矩阵操作
OpenGL的矩阵变换操作方法 借助OpenGL的矩阵堆栈,保存各个物体的矩阵变换 火柴棍案例 glMatrixMode(GL_PROJECTION); glMatrixMode(GL_MODELVIEW); 将当前变换矩阵设置为模型视图变换矩阵。 glPushMatrix,glPopMatrix—压入和弹出当前矩阵堆栈 glGet(GL_MAX_MODELVIEW_STACK_DEPTH); glGet(GL_MAX_PROJECTION_STACK_DEPTH); 来获取模型视图矩阵堆栈和投影矩阵堆栈的最大堆栈深度。一般情况下(在Windows平台上),模型视图的最大堆栈深度是32,而投影堆栈的最大深度是2。 自己保存各个物体的空间变换矩阵 float M[4][4]; //其中M[j,i]表示矩阵M的第j行,第i列的数据。 float M[16]; //也可以创建一个一维数组 无论是2维数组还是一维数组,都是按照列优先的顺序保存的。 如图所示 1. 读取矩阵堆栈 glGetFloatv(GL_MODELVIEW_MATRIX, M); glGetFloatv(GL_PROJECTION_MATRIX, M); 2. 设置矩阵堆栈,用于描画 glLoadIdentity(); //加载4*4单位矩阵; glLoadMatrix{fd}(*m); //加载指定4*4矩阵m; glMultiMatrix{fd}(*m); //当前矩阵右乘*m; 图形变换 1. 几何变换:平移、缩放、旋转 2. 齐次坐标:用n+1维向量表示n维向量,比如,(wx,wy,wz,w)表示(x,y,z)。 通常,令w=1,用来进行复合几何变换。 3. 坐标变换:根据图形在一个坐标系下的坐标求其在另一坐标系下的坐标。 4. 3D空间通过投影,可以在2D屏幕上显示。同时,在投影面上定义一个窗口。 只有窗口内的图形才显示。在屏幕上定义一个矩形视区,然后,从窗口到视区进行一一映射。 5. 透视投影:空间任意一点的透视投影是投影中心与空间点构成的投影线和投影平面的交点。 平行投影:投影方向于投影面垂直,为正投影,否则为斜投影。 6. 视变换:从世界坐标系变换到视坐标系。 由于视平面总是和XvYv面平行,所以,3D物体在视平面的投影和在输出设备上的显示是一致的。 三维物体的显示需要以下变换: 几何变换 - 视变换 - 投影变换 - 窗口到视区的变换 7. 视景体:通过视平面上的窗口观察到的区域,经过平行于视平面的前后裁剪面的裁剪而得到的区域。 由于消隐很耗时,且消隐需要图形的深度信息,因此在投影之前进行裁剪比较合理。 8. 视景体的规范化: A.平行投影规范化视景体,-1=x=1;-1=y=1;0=z=1; B.把透视视景体映射到沿与窗口垂直的矩形平行通道里; C.平移窗口中心到原点; D.缩放视景体的尺寸,使其满足A中的规范化。 9. 视区变换:通常设置视区为窗口大小的矩形区域。 一般来说,视区变换之前已经完成了所有的几何变换和投影变换,且已经进行了裁剪。 OGL实现 1. ModelView矩阵保存着视点变换和模型变换矩阵的累积乘积; glGetIntegerv(GL_MAX_MODELVIEW_STACK_DEPTH)可以得到矩阵堆栈中系统允许的最大矩阵数目; Projection矩阵包含了一个描述视景体的投影变换矩阵。投影矩阵很少复合,Projection矩阵堆栈只需要两层; glGetIntegerv(GL_MAX_PROJECTION_STACK_DEPTH)可以得到系统支持的投影矩阵堆栈的深度。 2. glMatrixMode(GLenum mode);//设置当前矩阵的操作类型; GL_MODELVIEW(模型视图)/GL_PROJECTION(投影)/GL_TEXTURE(贴图); 3. glLoadIdentity();//加载4*4单位矩阵; glLoadMatrix{fd}(*m);//加载指定4*4矩阵m; glMultiMatrix{fd}(*m);//当前矩阵右乘*m; 4. glTranslate{[fd](x,y,z);//平移; glRotate{fd}(angle,x,y,z);//旋转; glScale{fd}(x,y,z);//缩放; 5. glPushMatrix();//把当前矩阵压入矩阵堆栈; glPopMatrix();//从堆栈弹出矩阵(矩阵堆栈的顶为当前阵); 6. gluLookAt(GLdouble eyex,GLd
您可能关注的文档
- 数据结构-带头结点的循环链表.docx
- 精读(复习资料)0529.doc
- 2016托业300高频词汇.docx
- 高级英语第一册第三课 Vocabulary & Phases.doc
- 英文版节假日.docx
- Unit4(B3) 单元学习任务.doc
- 阅读理解主旨大意题练习.doc
- 雅思写作句式 I -6.2.doc
- 英语形似音似易混词归纳.doc
- 2014上海中考英语一模卷分类汇总5-首字母填空.doc
- 2025年新人教版英语八年级上册全册同步课件.pptx
- 2025年秋新人教版数学8年级上册全册课件.pptx
- 2025年秋新人教版三年级上册英语整册课件.pptx
- 2025年秋新人教版数学二年级上册整册课件 (2).pptx
- 2025年秋新人教版数学2年级上册整册课件 (2).pptx
- 2025年秋统编版语文三年级上册全册同步教学课件(课标版).pptx
- 2025年秋统编版语文三年级上册全册同步课件(课标版).pptx
- 2025年秋统编版语文三年级上册整册教学课件(课标版).pptx
- 2025年秋统编版语文三年级上册整册课件(课标版).pptx
- 2025年秋统编版语文3年级上册全册课件(课标版).pptx
文档评论(0)