天行健 君子当自强而不息

3D几何图元(5)

 

三角形

三角形在建模和图形学中有着极其重要的位置。复杂3D物体的表面,如车或人体,都是用三角形模拟的,像这样一组相连的三角形称作三角网格。

 

基本性质

三角形是通过列出它的三个顶点来定义的。这些点的顺序是非常重要的,在左手坐标系中,当从三角形"正面"看时,经常以顺时针方向列出这些点,设这三个顶点为v1v2v3。三角形位于一个平面中,这个平面的方程(法向量n和到原点的距离d)在很多应用中非常重要。

让我们标出图12.16中的三角形内角、顺时针边向量、边长。

设Liei的长度,注意ei、Livi的对应关系,vi为相应下标的顶点,它们的关系如下:

 

面积

最经典的计算方法是用底和高计算面积,观察图12.17中的平行四边形及其包含的三角形。

由经典几何可知,平行四边形面积等于底和高的乘积。因为三角形恰好占了这个面积的一半,所以由底和高给出的三角形面积公式为(公式12.18):

A = bh/2

公式12.18   三角形面积是平行四边形面积的一半

如果不知道高,可以使用海伦公式计算面积,它只需要提供三边的长度即可。设s为周长的一半(也称作半周长),如公式12.19所示:

海伦公式非常有用,因为它在3D中使用非常方便。

有时候,高和周长都没有直接提供,所知道的只有顶点的笛卡尔坐标。(当然,总是可以从坐标中算出边长,但在某些情况下,我们想要避免这种代价相对较高的计算。)让我们看看能否从顶点坐标直接计算面积。

先在2D中解决这个问题。基本思想是,对三角形三边中的每一边,计算上由该边,下由x轴所围成的梯形的有符号面积(如图12.18 所示)。

"有符号面积"是指:如果边的端点是从左向右的,则面积为正;如果边的端点是从右向左的,则面积为负。注意不管三角形的方向如何变化,都存在至少一个正边和一个负,一个竖直边的面积为0。各边下面区域的面积分别为:

即使一部分(或整个)三角形扩展到了x轴下边,上面的公式依然正确。

这三个梯形的有符号面积相加,就得到了三角形本身的面积。事实上,能用同样的思想计算任意多边形的面积。

这里,假设顶点是按顺指针列出的,如果顶点以相反的顺序列出,面积的符号将变负。将这三个梯形的面积相加,计算三角形的有符号面积:

实际上,还能进一步简化。基本思想是,平移三角形不会改变三角形的面积。因此,我们可以在竖直方向上平移三角形,从每个y坐标中减去y3,如公式12.20所示。(用代数变换也能得到这个简化形式。)

在3D中,可以通过叉乘来计算三角形的面积。两向量ab叉乘的大小等于以ab为两边的平行四边形的面积。因为三角形面积等于包围它的平行四边形的一半,所以我们有了一种简便方法。给出三角形的两个边向量,e1e2,则三角形面积为:

A = || e1 x e2 || / 2


posted on 2008-02-25 09:35 lovedday 阅读(752) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

导航

统计

常用链接

随笔分类(178)

3D游戏编程相关链接

搜索

最新评论