Визуализация тетраэдризации Октава - PullRequest
1 голос
/ 30 сентября 2011

Привет, кто-нибудь знает, как визуализировать тетраэдры на выходе функции delaunay3() в Octave?

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

В MATLAB эта визуализация выполняется с помощью функции tetramesh(), но в Octave эта функция не встроена!

В ссылке упоминаются функции triplot и trimesh, но они создают только треугольники, а не тетраэдры.

1 Ответ

0 голосов
/ 27 октября 2011

К сожалению, я не знаю достаточно об этом, чтобы думать об этом.Но я хотел бы упомянуть следующее, если вы еще этого не видели.До было обсуждение тетрамеша.Быстрое решение было написано martin_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) 
...