- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenGL中的曲线曲面
Angel: Interactive Computer Graphics 3E ? Addison-Wesley 2002 计算机图形学 杨 武 影像科学与技术实验室 东南大学计算机学院 yangwu@seu.edu.cn 第十章 三维对象表示 第十章之第五节 OpenGL中的曲线和曲面 主要内容 介绍OpenGL的求值器 学会显示多项式曲线和曲面 讨论OpenGL中的二次曲面 GLUT的二次曲面 GLU的二次曲面 OpenGL支持什么? 求值器(evaluator):利用Bernstein多项式进行工作的一般机制 可以应用任意次数的多项式 可以处理一到四维的情形 自动生成法向和纹理坐标 在GLU中支持NURBS 二次曲面 GLU和GLUT都包含对二次曲面的多项式近似功能 单变量求值器 在一组指定点计算任意次数Bernstein多项式的值 可以计算许多量 沿二、三或四维曲线上变化的点 颜色 法向 纹理坐标 可以建立多个求值器,同时计算 建立求值器 示例 计算 函数glEvalCoord1f(u)就会使得被激活的求值器计算特定的u对应的值 可以取代glVertex, glNormal, glTexCoord u的值不必等间距 示例 考虑前面建立的[0,1]区间上三次Bézier曲线的求值器 假设我们想用100个点构成的折线近似曲线 等间距点 通常我们并不需要自己采用循环结构,而可以建立一个等距网格,然后用一个函数调用计算出所有格点对应的值 Bezier 曲面 类似于单变量的情形,但求值器是两个变量的 建立方法: glMap2f(type, u_min, umax, u_stride, u_order, v_min, v_max, v_stride, v_order, pointer_to_data) 利用 glEvalCoord2f(u,v)求值 示例 用折线显示 用四边折线显示 均匀网格 可以类似于一个变量时构造等距网格的情形,构成两个变量的网格 glMapGrid2(u_num, u_min, u_max, v_num, v_min, v_max) 可以显示为与前面一样的折线,也可以显示为填充的多边形 glEvalMesh2( GL_FILL, u_start, u_num, v_start, v_num) 加光照的显示 如果应用填充的多边形,那么就需要进行明暗处理,否则就会看到均匀分布的颜色?? 可以指定光源和材料属性,但为此需要法向 可以让OpenGL求出法向 glEnable(GL_AUTO_NORMAL); NURBS OpenGL通过GLU库支持NURBS曲面 为什么需要用GLU呢? 可以在OpenGL标准库中应用四维空间中的求值器 然而,由于NURBS太复杂,需要太多的代码 有五个NURBS曲面相关的函数,以及定义修整曲线用的函数(这些函数可以剪去NURBS曲面的一部分) 二次曲面 GLU和GLUT库都支持二次曲面 都是采用多边形近似的方法,分辨率由用户指定 球面:经纬线 GLU:圆盘、圆柱、球 可以利用变换定位、放缩、定向。 GLUT:正多面体、圆环、Utah茶壶、圆锥 GLUT 对象 GLUT 的正多面体 在GLU中的二次对象 GLU可以自动生成法向和纹理坐标?? 二次曲面是一种特殊的类型的对象,它具有特别的属性,例如指定对象的显示方式 定义圆柱 GLUquadricOBJ *p; P = gluNewQuadric(); /*set up object */ gluQuadricDrawStyle(GLU_LINE);/*显示方式*/ gluCylinder(p, BASE_RADIUS, OP_RADIUS, BASE_HEIGHT, sections, slices); glMap1f(type,u_min,u_max,stride, order, pointer_to_array) 希望计算的类型 U的最大值和最小值 阶数(多项式次数+1) 控制数据的指针 数据点之间的间隔 每种类型都必须用 glEnable(type)进行激活 考虑在[0,1] 区间的三次Bezier曲线的求值器 point data[ ]={…………..}; * /3d data /* glMap1f(GL_MAP_VERTEX_3,0.0,1.0,3,4,data); 三维顶点数据 三次 数据的安排方式为 x,y,z,x,y,z…… glEnable(GL_MAP_VERTEX_3); glBegin(GL_LINE_STRIP) for(i=0; i100; i++) glEvalCoord1f( (float) i/1
您可能关注的文档
最近下载
- 《全面质量管理(习题集)》考试题库(含答案).pdf VIP
- 第6课《传播文明》课件++2024—2025学年苏少版(2024)初中美术七年级上册.pptx VIP
- 浙江工业大学研究生矩阵原理期末试题及答案.docx VIP
- Roland罗兰乐器SPD-SX 采样打击板SPD-SX 说明书用户手册.pdf
- 地基与基础分部验收工程总结.doc
- 数字化智能工厂建设方案及规划蓝图建设方案.doc VIP
- 刘伟教你打乒乓(北大)中国大学MOOC慕课 章节测验答案.docx
- 探究乡土植物在园林绿化建设中的应用及存在的问题.doc VIP
- 湖南省湘西州永顺县2023-2024学年四年级上学期期中英语试卷.doc VIP
- 2024年中级经济师《经济基础知识》教材变化对比.pdf
文档评论(0)