四面体化可视化八度

时间:2011-09-30 17:24:36

标签: octave delaunay

您是否有人知道如何在Octave中delaunay3()函数的输出中显示四面体?

http://www.obihiro.ac.jp/~suzukim/masuda/octave/html3/octave_151.html

在MATLAB中,这个可视化使用tetramesh()函数完成,但Octave没有内置此函数!

该链接确实提到triplottrimesh函数,但它们只创建三角形,而不是四面体。

1 个答案:

答案 0 :(得分:0)

不幸的是,我对此并不了解,对此有任何想法。但是,我想提及以下内容,以防你之前没见过。有discussions on tetramesh beforemartin_helm

编写了一个快速解决方案
function tetramesh( T, X, C)
  if nargin < 3
     C = mod((1:size(T, 1))'-1, size(colormap(), 1) + 1);
  endif
  triang = [T(:, 1) T(:, 2) T(:, 3); ...
            T(:, 2) T(:, 3) T(:, 4); ...
            T(:, 3) T(:, 4) T(:, 1); ...
            T(:, 4) T(:, 1) T(:, 2)];
  patch("Faces", triang, "Vertices", X, "FaceVertexCData", [C; C; C; C])
endfunction 

除了一些示例用法:

backend("fltk") % backend("gnuplot") could also be used
d = [-1 1];
[x,y,z] = meshgrid(d,d,d);
x = [x(:);0];
y = [y(:);0];
z = [z(:);0];

tetra = delaunay3(x,y,z);
X = [x(:) y(:) z(:)];
tetramesh(tetra, X)
view(30,30)