文档介绍:第六章
Graphics/VR 2007
三维对象表示
三维对象的表示
Three-Dimensional
Object Representations
如何表示场景中丰富多样的图形对象?
三维表示举例
alpha(.5)
这一章将学习:
三维形体的表示方法
边界表示 B-reps
多面体,规则二次/超二次曲面
样条曲面
细分曲面…
空间分区表示 space-partitioning
结构实体几何法 CSG
八叉树 octree,二叉树 BSP……
基于特征的三维造型
过程方法
扫描表示 sweep representation
分形几何方法 fractal-geometry method
形状语法(基于产生规则) shape grammar……
粒子系统 partical system
基于物理的方法 physically based modeling
数据集可视化 visualization
三维形体的边界表示 B-reps
规则多面体
曲面
二次/三次曲面
样条曲面
细分曲面
边界表示举例
表面三角形描述
构造多面体(polyhedron)
利用OpenGL多边形填充函数
利用GLUT规则多面体函数
glBegin (GL_POLYGON或GL_QUADS);
glVertex* (p1 );
glVertex* (p2 );
.
.
.
glEnd ( );
…
glutSolidCube (edgeLength);
…
立方体
举例:利用OpenGL多边形填充函数构造立方体
…
Typedef GLint vertex3 [3];
vertex3 pt [8]={{0, 0, 0}, …}
…
Void quad (GLint n1, GLint n2, GLint n3, GLint n4)
{
glBegin (GL_QUADS); //或(GL_POLYGON)
glVertex3iv (pt [n1]);
glVertex3iv (pt [n2]);
glVertex3iv (pt [n3]);
glVertex3iv (pt [n4]);
glEnd ( );
}
Void cube ( )
{
quad (6, 2, 3, 7);
quad (5, 1, 0, 4);
quad (7, 3, 1, 5);
quad (4, 0, 2, 6);
quad (2, 0, 1, 3);
quad (7, 5, 4, 6);
}
…
z
x
y
0
4
6
2
7
5
3
1
GLUT中的10个规则多面体函数
glut多面体函数
规则多面体
glutWireTetrahedron
线框三棱锥(四面体)
glutSolidTetrahedron
实体三棱锥
glutWireCube
线框立方体
glutSolidCube
实体立方体
glutWireOctahedron
线框八面体
glutSolidOctahedron
实体八面体
glutWireDodecahedron
线框十二面体
glutSolidDodecahedron
实体十二面体
glutWireIcosahedron
线框二十面体
glutSolidIcosahedron
实体二十面体
GLUT规则多面体函数应用示例
…
#include “”
…
GLsizei winWidth=500, winHeight=500;
void init (void)
{
glClearColor (,,,);
}
void displayWirePolyhedra (void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (, , )
gluLookAt (, , , , , , , , )
glScalef (, , );
glutWireCube (); //立方体,以世界坐标系原点为中心,
线框立方体