用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。
\[\]
图4-4 立方体的3维Delaunay剖分