散乱体数据的Delaunay剖分

用delaunay函数进行三维Delaunay剖分。用tetramesh函数绘delaunay函数输出数据的图形。该函数用网格显示T定义的四面体。它使用默认的tranparency参数值'FaceAlpha'=0.9,近于透明。

下面的例子进行3维Delaunay剖分,然后用tetramesh函数绘制组成对应单形体的四面体。camorbit函数旋转相机位置。

code.matlab
>> d=[-1 1];
>> [x,y,z]=meshgrid(d,d,d);  % 一个立方体
>> x=[x(:);0];  %各顶点的x坐标,加上了原点,一共9个顶点
>> y=[y(:);0];
>> z=[z(:);0];
>> Tes=delaunay(x,y,z)  %Delaunay剖分
Tes =
     5     2     6     9
     7     5     6     9
     1     2     5     9
     9     1     2     3
     9     2     4     3
     6     2     4     9
     7     8     4     9
     6     8     7     9
     6     4     8     9
     4     7     9     3
     5     1     9     3
     9     7     5     3

Tes中每行数据表示一个四面体的四个顶点的编号。共12行数据,对应12个四面体。下面获取每个顶点的三维坐标。

code.matlab
>> X=[x(:) y(:) z(:)]
X =
    -1    -1    -1
    -1     1    -1
     1    -1    -1
     1     1    -1
    -1    -1     1
    -1     1     1
     1    -1     1
     1     1     1
     0     0     0

X中每行数据表示一个顶点的x,y,z坐标。下面绘立方体的Delaunay剖分网格图。

code.matlab
>> tetramesh(Tes,X);camorbit(20,0)

生成图4-4。

Document Image
\[\]

图4-4 立方体的3维Delaunay剖分