资源描述:
《opengl编程轻松入门之nurbs曲线和曲面》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、OpenGL编程轻松入门之NURBS曲线和曲面2006-05-2209:53作者:黄燕出处:天极开发责任编辑:方舟上一节讲了一般的曲线与曲面的绘制,本节讲NURBS曲线和曲面的绘制。 例11:此例绘制两个相同形状的NURBS曲面,不同之处是一个为线框式,一个是由实多边形组成。运行后可以看到其中的区别,如图十三所示。#include#includeGLUnurbsObj*theNurb1;GLUnurbsObj*theNurb2;GLfloatctrlpoints[5][5]
2、[3]={{{-3,0.5,0},{-1,1.5,0},{-2,2,0},{1,-1,0},{-5,0,0}},{{-3,0.5,-1},{-1,1.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,
3、-1,-4},{-5,0,-4}}};//控制点GLfloatmat_diffuse[]={1.0,0.5,0.1,1.0};GLfloatmat_specular[]={1.0,1.0,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
4、(GL_FRONT,GL_DIFFUSE,mat_diffuse); glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular); glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess); glLightfv(GL_FRONT,GL_POSITION,light_position);//设置光源参数 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE);//设置光照模型参数 /*激活光照*/OpenG
5、L编程轻松入门之NURBS曲线和曲面2006-05-2209:53作者:黄燕出处:天极开发责任编辑:方舟上一节讲了一般的曲线与曲面的绘制,本节讲NURBS曲线和曲面的绘制。 例11:此例绘制两个相同形状的NURBS曲面,不同之处是一个为线框式,一个是由实多边形组成。运行后可以看到其中的区别,如图十三所示。#include#includeGLUnurbsObj*theNurb1;GLUnurbsObj*theNurb2;GLfloatctrlpoints[5][5][3]={
6、{{-3,0.5,0},{-1,1.5,0},{-2,2,0},{1,-1,0},{-5,0,0}},{{-3,0.5,-1},{-1,1.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
7、},{-5,0,-4}}};//控制点GLfloatmat_diffuse[]={1.0,0.5,0.1,1.0};GLfloatmat_specular[]={1.0,1.0,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_F
8、RONT,GL_DIFFUSE,mat_diffuse); glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular); glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess); glLightfv(GL_FRONT,GL_POSITION,light