OPENGL第8章曲线曲面.pptVIP

  1. 1、本文档共22页,可阅读全部内容。
  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文档。上传文档
查看更多
OPENGL第8章曲线曲面.ppt

* * * * * * * * * * * * * * 第8章 自由曲线和曲面 本章学习: 自由曲线 Bezier方法 Nurbs方法 自由曲面 Bezier方法 Nurbs方法 曲面显示状态 线框图绘制 着色图绘制 * 什么是 自由曲线/曲面? 一种非解析表达的曲线/曲面 属于参数曲线 曲线:r(u)=(x(u),y(u),z(u)) 曲面:s(u,v)=(x(u,v),y(u,v),z(u,v)) u=0 u=1 u=0 u=1 v=0 v=1 0? u ? 1 0? u ,v? 1 * Bezier曲线/曲面基本概念 控制点(也称特征多边形顶点):构成控制多边形,反映了曲线的大致形状,例如:p1,p2,p3,p4 型值点,曲线上的点,例如红色点 曲线的次数:参数的次数,常用为3次(常用u3) 控制点个数=次数+1,例如4个顶点,得到一条3次曲线。 u 0 1 p0 p1 p2 p3 * Bezier曲线/曲面基本概念 连续性:光滑连接的几何条件。 绘制曲线:指定控制点(一组给定点)及参数u的范围,自动按照参数u计算曲线上的点,并用直线连接。 u 0 1 0 1 * n为贝齐埃曲线的次数,例如3 为特征多边形顶点的序号, 为参数, 。 是特征多边形顶点的位置矢量, 是伯恩斯坦基函数 * 当n=3时,由(3-5)式可得到三次伯恩斯坦基函数: * 0≤ u ≤1 三次Bezier曲线的表达式 * 0≤ u ≤1 * 建立Bezier曲线 建立Bezier: glMap1f(GL_MAP1_VERTEX_3, //每个顶点为x,y,z3个分量 0.0f, 100.0f, // u 的范围,实际指u的绘制点数 3, // 控制点数组中相邻顶点浮点数间的间隔 nNumPoints, // 控制点的个数 ctrlPoints[0][0]); // 控制点数据指针 glEnable(GL_MAP1_VERTEX_3);//激活求值函数 u 0 100 x1,y1,z1 x2,y2,z2 * 计算并显示曲线上点-方法1:计算点坐标 glBegin (GL_LINE_STRIP); for(i = 0; i = 100; i++) { glEvalCoord1f((GLfloat) i); // 计算曲线上对应参数i的点,画直线逼近 } glEnd(); u 第8章自由曲面-Bezier * 计算并显示曲线上的点-方法2:计算网格点 方法2: glMapGrid1d(100,0.0,100.0);//参数范围 glEvalMesh1(GL_LINE,0,100); // 计算曲线上的点,画直线逼近 参数值个数 参数范围 * 3D Bezier曲面 bezier曲线的推广 包含两个参数,u和v,各参数取值范围 顶点数为(u+1)×(v+1) 画直线连接或者填充 u v v u * 建立Bezier曲面(2次) glMap2f(GL_MAP2_VERTEX_3, // Type of data generated 0.0f, // Lower u range 10.0f, // Upper u range 3, // Distance between points in the data 3, // Dimension in u direction (order) 0.0f, // Lower v range 10.0f, // Upper v range 9, // Distance between points in the data 3, // Dimension in v direction (order) ctrlPoints[0][0][0]); // array of control points glEnable(GL_MAP2_VERTEX_3); //用于曲面上的点求值 3个分量 * 计算并显示 Bezier曲面上的点 glMapGrid2d(10,0.0,10.0,10,0.0,10.0);//参数范围 glEvalMesh2(GL_LINE,0,10,0,10); // 计算曲面上的点,画直线 线的个数 u参数范围 第8章自由曲面-Bez3D 画直线 画多少 * 3个函数之间的关系 glMap2f(GL_MAP2_VERTEX_3, 0, 10, 3, 3, 0.0f, 10.0f, 9, 3, ctrlPoints[0][0][0]); //定义一个求值程序 glMapGrid2d(10,0.0,10.0,10,0.0,10.0);//定义网格 glEva

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档