opengl之nurbs曲线和曲面

opengl之nurbs曲线和曲面

ID:11069553

大小:56.29 KB

页数:8页

时间:2018-07-09

opengl之nurbs曲线和曲面_第1页
opengl之nurbs曲线和曲面_第2页
opengl之nurbs曲线和曲面_第3页
opengl之nurbs曲线和曲面_第4页
opengl之nurbs曲线和曲面_第5页
资源描述:

《opengl之nurbs曲线和曲面》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、上一节讲了一般的曲线与曲面的绘制,本节讲NURBS曲线和曲面的绘制。  例11:此例绘制两个相同形状的NURBS曲面,不同之处是一个为线框式,一个是由实多边形组成。运行后可以看到其中的区别,如图十三所示。#include#includeGLUnurbsObj*theNurb1;GLUnurbsObj*theNurb2;GLfloatctrlpoints[5][5][3]={{{-3,0.5,0},{-1,1.5,0},{-2,2,0},{1,-1,0},{-5,0,0}},{{-3,0.5,-1},{-1,1.

2、5,-1},{-2,2,-1},{1,-1,-1},{-5,0,-1}},{{-3,0.5,-2},{-1,1.5,-2},{-2,2,-2},{1,-1,-2},{-5,0,-2}},{{-3,0.5,-3},{-1,1.5,-3},{-2,2,-3},{1,-1,-3},{-5,0,-3}},{{-3,0.5,-4},{-1,1.5,-4},{-2,2,-4},{1,-1,-4},{-5,0,-4}}};//控制点GLfloatmat_diffuse[]={1.0,0.5,0.1,1.0};GLfloatmat_specular[]={1.0,1.0

3、,1.0,1.0};GLfloatmat_shininess[]={100.0};GLfloatlight_position[]={0.0,-10.0,0.0,1.0};voidmyInit(void){ glClearColor(1.0,1.0,1.0,0.0);//设置背景色 /*为光照模型指定材质参数*/ glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse); glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular); glMaterialfv(GL_FRONT,GL_SH

4、ININESS,mat_shininess); glLightfv(GL_FRONT,GL_POSITION,light_position);//设置光源参数 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE);//设置光照模型参数 /*激活光照*/ glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glDepthFunc(GL_LEQUAL); glEnable(GL_DEPTH_TEST); glEnable(GL_LEQUAL); glEnable(GL_AUTO_NO

5、RMAL); glEnable(GL_NORMALIZE); /*设置特殊效果*/ glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glHint(GL_LINE_SMOOTH_HINT,GL_DONT_CARE); glEnable(GL_BLEND); glFrontFace(GL_CW); glShadeModel(GL_SMOOTH); glEnable(GL_LINE_SMOOTH); theNurb1=gluNewNurbsRenderer();//创建NURBS对象theNurb1 gluN

6、urbsProperty(theNurb1,GLU_SAMPLING_TOLERANCE,25.0); gluNurbsProperty(theNurb1,GLU_DISPLAY_MODE,GLU_OUTLINE_POLYGON); theNurb2=gluNewNurbsRenderer();//创建NURBS对象theNurb2 gluNurbsProperty(theNurb2,GLU_SAMPLING_TOLERANCE,25.0); gluNurbsProperty(theNurb2,GLU_DISPLAY_MODE,GLU_FILL);}in

7、tspin=0;/*接收键盘指令*/staticvoidmyKey(unsignedcharkey,intx,inty){ switch(key) {  case'd':   spin=spin+1;   glRotatef(spin,1.0,1.0,0.0);   glutPostRedisplay();   break;  case27:   exit(0);  default:   break; }}/*绘制曲面*/voidmyDisplay(void){ GLfloatknots[10]={0.0,0.0,0.0,0.0,0.0,1.0,1.0,

8、1.0,1.0,1.0}; glClear(GL_COLOR_BUFFER_BI

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。