posts - 394, comments - 566, trackbacks - 0, articles - 0

曲线和曲面的表示

Posted on 2013-02-26 21:15 eryar 阅读(2425) 评论(0)  编辑 收藏 引用 所属分类: 2.OpenCASCADE

曲线和曲面的表示

Curves and Surfaces Representation

eryar@163.com

一、概述 Overview

在学习曲线和曲面时,总是希望将计算结果显示出来,这样便于对数学公式形成更直观的认识,可以借助工具OpenGL来将实现。对于曲线或以使用GL_LINE_STRIP来将曲线上的离散点连接起来形成曲线;对于曲面可以使用三角形或多边形来将曲面上的离散点连接起来形成曲面。

二、多边形表示 Polygonal Representation

OpenGL支持一些基本的图元对象:点、线、三角形、四边形和凸多边形。此外,还支持使用求值器(evaluator)来表示高阶的曲面片。简单对象,如长方体可以使用四边形来表示每个面。建模的部分工作就是确定组成模型的每个多边形的顶点坐标。为了增加真实性,通常还需要确定顶点或面的颜色、法线、纹理坐标等。

由曲面组成的复杂对象也可使用多边形(polygons)表示。曲面使用由曲面上的坐标点组成的网格(gridworkmesh)来表示。当使用大量的多边形时,就可以逼近真实的曲面了。当用多边形来表示对象时,相邻多边形就可以共享边。为了确保共享边渲染时不出现间隙,两个多边形的共享边的端点坐标必须相同。

三、三角形带Triangle Stripping

OpenGL程序最简单的提速和节省存储空间的做法是将三角形和多边形转换成三角带(triangle strips)。若模型对象是由NURBS数据直接产生的或来自其它一些普通几何体,将三角形连接成三角带是很直观的。还需要确定所有的三角形都有正确的方向。如下图所示:

Triangle strip winding

Triangle fan winding

对于常规的网格(regular meshes),三角形带应该一条紧接一条,如下图所示:

A mesh made up of multiple triangle strips

 


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理