版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机图形学
-------------------------------------\
中国科学技术大学数学系
邓建松
dengjs@
第十章之第四节
OpenGL中的
曲线和曲面
主要内容
•介绍OpenGL的求值器
•学会显示多项式曲线和曲面
•讨论OpenGL中的二次曲面
GLUT的二次曲面
GLU的二次曲面
OpenGL支持什么?
•求值器(evaluator):利用Bernstein多项式
进行工作的一般机制
•可以应用任意次数的多项式
•可以处理一到四维的情形
•自动生成法向和纹理坐标
•在GLU中支持NURBS
•二次曲面
•GLU和GLUT都包含对二次曲面的多项式近似
功能
单变量求值器
•在一组指定点计算任意次数Bernstein多
项式的值
•可以计算许多量
沿二、三或四维曲线上变化的点
颜色
法向
纹理坐标
•可以建立多个求值器,都计算同一个值
建立求值器
希望计算的类型
U的最大值和最小值
glMaplf(typeAu_minAu_maxAstrideA
orderpointer_to_array)\
/A\数据点上间的间隔
多项式次数加1,即阶数\
控制数翥的指针
每种类型都必须用glEnable(type)进行激活
示例
考虑在[0,1]区间的三次B6zier曲线的求值器
floatdata[]={......};*/三维数据/*
glMaplf(GL_MAP1_VERTEX_3,0.0,1.0,3,4,data);
三维顶点数据/三次,四阶
数据的安排方式为x,y,z,x,y,z......
glEnable(GL_MAP1_VERTEX_3);
计算
・函数glEvalCoordlf(u)就会使得被激
活的求值器计算特定的u对应的值
可以取代glV㊀rt㊀x,glNormal,
glT㊀xCoord
•U的值不必等间距
示例
•考虑前面建立的[0,1]区间上三次B6zier曲
线的求值器
•假设我们想用100个点构成的折线近似曲
线
glB㊀gin(GL_L工NE_STR工P);
for(i=0;i<=100;i++)
glEvalCoordlf(i/100.0);
glEnd();
等间距点
•通常我们并不需要自己采用循环结构,而
可以建立一个等距网格,然后用一个函数
调用计算出所有格点对应的值
glMapGridlf(100f0・0,1.0);
建立起介于[0,1]之间的100个等间距点
glEvalM㊀shl(GL_LINEf0,99);
显示计算出来的第。个点到第99个点构成的折线
BCzier曲面
•类似于单变量的情形,但求值器是两个变
量的
•建立方法:
glMap2f(typ㊀,u_min,u_maxf
u_strid㊀,u_ord㊀r,v_minAv_maxf
v_strid㊀,v_ord㊀r,
point㊀r_to_data);
利用glEvalCoord2f(u,v)求值
示例
[0,1]x[0,1]上的双三次曲面
pointdata[4][4]={..};
glMap2f(GL_MAP2_VERTEX_3A0.0,1.0,3,4,
0.0,1.0,12r4rdata[0]);
注意在v方向数据点是由12个浮点数分开的,
因此数组是按行存贮的。
用折线显示
需要在两个方向绘制折线
for(j=0;j<=100;j++){
glBegin(GL_LINE_STRIP);
for(i=0;i<=100;i++)
glEvalCoord2f((float)i/100.0,(float)j/100.0);
glEnd();
glBegin(GL_LINE_STRIP);
for(i=0;i<=100;i++)
glEvalCoord2f((float)j/100.0,(float)i/100.0);
glEnd();
可以形成四边网格,然后显示为折线
for(j=0;j<99;j++){
glBegin(GL_QUAD_STRIP);
for(i=0;i<100;i++){
glEvalCoord2f((float)i/100.0,
(float)j/100.0);
glEvalCoord2f((float)(i+1)/100.0,
(float)j/100.0);
)
glEnd():
均匀网格
•可以类似于一个变量时构造等距网格的情
形,构成两个变量的网格
glMapGrid2f(u_numfu_minAu_maxA
v_numfv_minfv_max);
•可以显示为与前面一^样的折线,也可以显
示为填充居多边形
glEvalMesh2(GL_FILLfu_start,u_numA
v_startrv_num);
•如果应用填充的多边形,那么就需要进行明暗
处理,否则就会看到均匀分布的颜色
•可以指定光源和材料属性,但为此需要法向
可以让OpenGL求出法向
glEnable(GL_AUTO_NORMAL);
NURBS
•OpenGL通过GLU库支持NURBS曲面
•为什么需要用GLU呢?
可以在OpenGL标准库中应用四维空间中的求
值器
然而,由于NURBS太复杂,需要太多的代码
有五个NURBS曲面相关的函数,以及定义修整
曲线用的函数(这些函数可以剪去NURBS曲面
的一部分)
典型曲面
•GLU和GLUT库都支持二次曲面
•都是采用多边形近似的方法,分辨率由用户指
定
球面:经纬线
•GLU:圆盘、圆柱、球
可以利用变换定位、放缩、定向。
•GLUT:正多面体、圆环、Utah茶壶、圆
锥
HTHXX
GLUT对象
每种类型都具有线框和实体的两种形式
glutWireTeapot()
HTHXX
GLUT的正多面体
glutWireTetrahedron()
glutWireOctahedron()glutWirelcosahedron()
在GLU中的二次对象
•GLU可以自动生成法向和纹理坐标
•二次曲面是一种特殊的类型的对象,它具
有特别的属性,例如指定对象的显示方式
部分圆盘球面
定义圆柱
GLUquadricOB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业管理-财务费用报销管理制度
- 四川省成都市成都外国语校2025-2026学年第二学期开学考试初三数学试题测试2.13试题含解析
- 浙江省杭州市临安区2026年初三下学期中考试化学试题含解析
- 江苏省苏州市高新区2026届初三下学期第二次调研考试物理试题试卷含解析
- 河南省商丘综合实验中学2026年3月初三线上自我检测试题数学试题含解析
- 黑龙江省佳木斯市重点达标名校2025-2026学年初三下第七次模拟数学试题含解析
- 辽宁省辽阳市辽阳县重点中学2026届初三练习题二(全国卷II)数学试题含解析
- 面瘫的中医护理与社会支持
- 婴幼儿感冒的家庭环境消毒
- 协会经费审计制度
- 2026福建浦开集团有限公司、福建浦盛产业发展集团有限公司、福建浦丰乡村发展集团有限公司社会公开招聘补充笔试模拟试题及答案解析
- 桥牌协会内部管理制度
- 2026重庆市南岸区消防救援支队消防文员招录2人笔试备考试题及答案解析
- 2026年山东省立第三医院初级岗位公开招聘人员(27人)笔试备考试题及答案解析
- 2026年滁州天长市大通镇预任制村干及村级后备干部储备库选拔28名笔试备考试题及答案解析
- 2026秋招:广州环投集团笔试题及答案
- 【新教材】人教PEP版(2024)四年级下册英语全册教案(含教学计划)
- 肠道菌群移植培训课件
- T/CAPE 11005-2023光伏电站光伏组件清洗技术规范
- 内燃机车柴油机冷却水系统-交流传动内燃机车柴油机冷却水系统
- 化学入门-给小学生讲化学
评论
0/150
提交评论