- 5
- 0
- 约6.08千字
- 约 61页
- 2018-03-16 发布于北京
- 举报
计算机科学与技术-图形学4.ppt
* 1999年7月07/16/96 * *## * 1999年7月07/16/96 * *## * 扫描表示法(sweep representation)可以利用简单的运动规则生成有效实体。? 包含两个要素 一是作扫描运动的基本图形(截面); 二是扫描运动的方式。 扫描表示(sweep representation) * 构造实体几何法(CSG,Constructive Solid Geometry)由两个实体间的并、交或差操作生成新的实体。 构造实体几何法 图4.13 构造实体几何法 * 在构造实体几何法中,集合运算的实现过程可以用一棵二叉树(称为CSG树)来描述。 树的叶子是基本体素或是几何变换参数; 树的非终端结点是施加于其子结点的正则集合算子(正则并、正则交和正则差)或几何变换的定义。 构造实体几何法 * 构造实体几何法 图4.14 由CSG树产生二维形体的实例 * 优点:如果体素设置比较齐全,通过集合运算就可以构造出多种不同的符合需要的实体。 缺点一:集合运算的中间结果难以用简单的代数方程表示,求交困难。 缺点二:CSG树不能显式地表示形体的边界,因而无法直接显示CSG树表示的形体。 构造实体几何法 * 解决:光线投射算法 构造实体几何法 图4.15 光线投射算法 (实体A∪B取ad,实体A∩B则取cb,实体A-B则取ab) * 空间位置枚举表示法将包含实体的空间分割为大小相同、形状规则(正方形或立方体)的体素,然后,以体素的集合来表示图形对象。 二维情况,常用二维数组存放。 三维情况下,常用三维数组p[i][j][k]来存放。 空间位置枚举表示 * 八叉树(octrees)又称为分层树结构,它对空间进行自适应划分,采用具有层次结构的八叉树来表示实体。 八叉树 * 八叉树——四叉树 图4.16 二维图的四叉树表示 * 八叉树 图4.17 三维空间分成八个卦限及其节点表示 * 二叉空间分割(Binary Space Partitioning,BSP)树方法是一种类似于八叉树的空间分割方法,它每次将一实体用任一位置和任一方向的平面分为二部分(不同于八叉树方法的每次将实体用平行于笛卡尔坐标平面的三个两两垂直的平面分割)。 BSP树 * GLUT库中的多面体函数 OpenGL中的实体模型函数 函数 说明 glutSolidTetrahedron( ) glutWireTetrahedron( ) 绘制中心位于世界坐标系原点的实心四面体和线框四面体,四面体的半径为 。 glutSolidCube(size) glutWireCube(size) 绘制中心位于世界坐标系原点的实心立方体和线框立方体,立方体的半径为size,size是一个双精度浮点值。 glutSolidOctahedron ( ) glutWireOctahedron ( ) 绘制中心位于世界坐标系原点的实心八面体和线框八面体,八面体的半径为1.0。 glutSolidDodecahedron( ) glutWireDodecahedron( ) 绘制中心位于世界坐标系原点的实心12面体和线框12面体,12面体的半径为 。 glutSolidIcosahedron( ) glutWireIcosahedron( ) 绘制中心位于世界坐标系原点的实心20面体和线框20面体,20面体的半径为1.0。 表4.1 GLUT生成规则多面体的函数 * GLUT库中的二、三次曲面 绘制实体或线框球面 void glutSolidSphere/glutWireSphere (GLdouble radius, GLint slices, GLint stacks); 绘制实体或线框圆锥面 void glutSolidCone/glutWireCone (GLdouble radius, GLdouble height, GLint slices, GLint stacks); OpenGL中的实体模型函数 * 绘制实体或线框圆环 void glutSolidTorus/ glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint slices,GLint stacks); 绘制实体或线框茶壶 void glutSolidTeapot/glutWireTeapot (GLdouble size); OpenGL中的实体模型函数 * GLU二次曲面函数 定义一个二次曲面 GLUquadricObj *sphere; 激活二次曲面绘制器 sphere = gluNewQuadric( ); 指定二次曲面
原创力文档

文档评论(0)