1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Bezier曲面

一、设计实验目的 通过实验可以更了解Bezier曲线曲面的概念,理解Bezier曲面生成的原理,加深对Bezier生成算法的理解,加强理论的学习,锻炼对知识的运用能力和实践能力;进一步对OpenGL强大功能的认识,并对一些函数如display()、makeImage()、init() 、reshape(int w, int h)等的功能的运用又进一步的了解,为以后的学习打下基础。 二、设计实验要求 呈现Bezier曲面,并使其能够旋转和平移 三、实验原理 本程序用Visual C++ Win32 Console Applicstion(32控制台应用程序)创建一个应用程序,再添加一个c++程序源—Bezier曲面。 绘制Bezier曲面主要运用多个多边形逼近而成,,并通过少数几个控制点对其进行描述。通过定义曲面和均匀网格绘制一个具有光照和明暗处理效果的Bezier曲面,并实现曲面的放大和缩小,绕x轴,y轴,z轴旋转 四、算法分析: 下面给出程序中主函数中各函数功能说明: glutInit(argc, argv)初始化GLUT,用来接收来自main函数的参数,程序可以具体实现相关方式来使用这些参数。 glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH)颜色缓存的缓存模式,用于显示图形的颜色; glutInitWindowSize (1000, 600)函数功能是创建一个窗口大小为(1000,600); glutInitWindowPosition (30, 40)函数是所创建的窗口的(0,0)坐标在电脑窗口(30,40)出显示出来; glutCreateWindow (argv[0])函数的功能实在屏幕上创建一个窗口; glutDisplayFunc(display)函数display在每次对窗口重绘时使用; glutReshapeFunc(reshape) 函数主要是改变窗口大小的操作进行重绘; glutMainLoop()是程序进入无限事件处理循环计算函数,该函数的调用应为main函数最后一条语句出现。 下面是各函数中的组成函数功能说明: 定义控制点坐标数组: GLfloat ctrlpoints[4][4][3] 绘制曲面(包含的代码描述了所要绘制的Bezier曲面)函数: display() 生成图形的纹理函数: makeImage() 负责状态变量初始化的函数: init() 改变窗口大小的操作进行重绘的函数: reshape() 程序进入无限事件处理循环计算函数: glutMainLoop() glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)主要定义窗口底面颜色 void glEvalMesh2(GLenum mode,GLint p1,GLint p2,GLint q1,GLint q2) 的mode参数除了可以是GL_POINT和GL_LINE外,也可以是GL_FILL(生成填充空间曲面)。 void glMap2{fd}(GLenum target,TYPE u1,TYPE u2,GLint ustride,GLint uorder,TYPE v1,TYPE v2,Glint vstride,GLint vorder,TYPE points);   这里target的意义与在glMap1*()中的意义相同;(u1,u2),(v1,v2)是二维曲面坐标;其他参数如uorder,vorder,ustride和vstride等的定义都类似于在曲线中的定义;points为控制点坐标。对曲面任意一点的计算可通过函数 void glEvalCoord2{fd}[v](TYPE u,TYPE v);   来完成,通过在定义域内的曲线坐标值u,v来计算曲面内任意一点的世界坐标位置。对于曲面,也可以象曲线一样通过函数来定义均匀间隔的曲面坐标值:   void glMapGrid2{fd}(GLenum nu,TYPE u1,TYPE u2, GLenum nv,TYPE v1,TYPE v2);     该函数定义曲面参数空间均匀网格,从u1到u2分为等间隔nu步,从v1到v2分为等间隔nv步,然后

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档