runTetGen

Below is a demonstration of the features of the runTetGen function

Contents

clear; close all; clc;

Plot settings

fontSize=15;
faceAlpha1=0.4;
faceAlpha2=1;
cMap=gjet(4);
patchColor=cMap(1,:);
markerSize=10;

path names

filePath=mfilename('fullpath');
savePath=fullfile(fileparts(fileparts(filePath)),'data','temp');
modelName=fullfile(savePath,'tetgenmodel');

MESHING A SINGLE REGION MODEL

testCase=2;
switch testCase
    case 1
        [F,V,~]=geoSphere(2,1); % Building a geodesic dome surface model
    case 2
        [F,V]=stanford_bunny('g'); %Bunny
        V_mean=mean(V,1);
        V=V-V_mean(ones(size(V,1),1),:);
end

Plotting model

cFigure; hold on;
title('Surface model','FontSize',fontSize);
gpatch(F,V,patchColor,'k',faceAlpha1);
camlight headlight;
axisGeom(gca,fontSize);

DEFINE FACE BOUNDARY MARKERS

faceBoundaryMarker=ones(size(F,1),1);

Define region points

[V_regions]=getInnerPoint(F,V);

Define hole points

V_holes=[];

Regional mesh volume parameter

[regionA]=tetVolMeanEst(F,V); %Volume for regular tets

CREATING THE INPUT STRUCTURE

stringOpt='-pq1.2AaY';

inputStruct.stringOpt=stringOpt;
inputStruct.Faces=F;
inputStruct.Nodes=V;
inputStruct.holePoints=V_holes;
inputStruct.faceBoundaryMarker=faceBoundaryMarker; %Face boundary markers
inputStruct.regionPoints=V_regions; %region points
inputStruct.regionA=regionA;
inputStruct.minRegionMarker=2; %Minimum region marker
inputStruct.modelName=modelName;

Mesh model using tetrahedral elements using tetGen (see: http://wias-berlin.de/software/tetgen/)

[meshOutput]=runTetGen(inputStruct); %Run tetGen
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- TETGEN Tetrahedral meshing --- 19-Jun-2017 11:59:38
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Writing SMESH file --- 19-Jun-2017 11:59:38
----> Adding node field
----> Adding facet field
----> Adding holes specification
----> Adding region specification
--- Done --- 19-Jun-2017 11:59:38
--- Running TetGen to mesh input boundary--- 19-Jun-2017 11:59:38
Opening /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.smesh.
Delaunizing vertices...
Delaunay seconds:  0.021508
Creating surface mesh ...
Surface mesh seconds:  0.004899
Recovering boundaries...
Boundary recovery seconds:  0.005243
Removing exterior tetrahedra ...
Spreading region attributes.
Exterior tets removal seconds:  0.004049
Recovering Delaunayness...
Delaunay recovery seconds:  0.002933
Refining mesh...
Refinement seconds:  0.208616
Optimizing mesh...
Optimization seconds:  0.02494

Writing /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.1.node.
Writing /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.1.ele.
Writing /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.1.face.
Writing /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.1.edge.

Output seconds:  0.062466
Total running seconds:  0.334808

Statistics:

  Input points: 1520
  Input facets: 3036
  Input segments: 4554
  Input holes: 0
  Input regions: 1

  Mesh points: 5904
  Mesh tetrahedra: 32785
  Mesh faces: 67088
  Mesh faces on exterior boundary: 3036
  Mesh faces on input facets: 3036
  Mesh edges on input segments: 4554
  Steiner points inside domain: 4384

--- Done --- 19-Jun-2017 11:59:39
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Importing TetGen files --- 19-Jun-2017 11:59:39
--- Done --- 19-Jun-2017 11:59:39

Access model element and patch data

Fb=meshOutput.facesBoundary;
Cb=meshOutput.boundaryMarker;
V=meshOutput.nodes;
CE=meshOutput.elementMaterialID;
E=meshOutput.elements;

PLOTTING MODEL

%Selecting half of the model to see interior
Y=V(:,2); YE=mean(Y(E),2);
L=YE>mean(Y);
[Fs,Cs]=element2patch(E(L,:),CE(L),'tet4');

cFigure;
hold on;
title('Cut view of Solid tetrahedral mesh model','FontSize',fontSize);
gpatch(Fb,V,0.5*ones(1,3),'none',faceAlpha1);
gpatch(Fs,V,Cs,'k',faceAlpha2);
plotV(V(unique(Fs(:)),:),'k.','MarkerSize',markerSize);
camlight headlight;
axisGeom(gca,fontSize);
axis off;
colormap(cMap);
drawnow;

MESHING IMPORTED GEOMETRY

Import an STL model

defaultFolder = fileparts(fileparts(mfilename('fullpath')));
pathName=fullfile(defaultFolder,'data','STL');
fileName=fullfile(pathName,'femur.stl');
[stlStruct] = import_STL(fileName);

F=stlStruct.solidFaces{1};
V=stlStruct.solidVertices{1};

% Merging nodes (nodes are not merged in stl)
[~,ind1,ind2]=unique(pround(V,5),'rows');
V=V(ind1,:);
F=ind2(F);

Plotting model

cFigure; hold on;
title('Surface model','FontSize',fontSize);
gpatch(F,V,patchColor,'k',faceAlpha1);
camlight headlight;
axisGeom(gca,fontSize);

DEFINE FACE BOUNDARY MARKERS

faceBoundaryMarker=ones(size(F,1),1);

Define region points

V_regions=[0 0 0];

Define hole points

V_holes=[];

Regional mesh volume parameter

[regionA]=tetVolMeanEst(F,V); %Volume for regular tets

CREATING THE INPUT STRUCTURE

stringOpt='-pq1.2AaY';

inputStruct.stringOpt=stringOpt;
inputStruct.Faces=F;
inputStruct.Nodes=V;
inputStruct.holePoints=V_holes;
inputStruct.faceBoundaryMarker=faceBoundaryMarker; %Face boundary markers
inputStruct.regionPoints=V_regions; %region points
inputStruct.regionA=regionA;
inputStruct.minRegionMarker=2; %Minimum region marker
inputStruct.modelName=modelName;

Mesh model using tetrahedral elements using tetGen (see: http://wias-berlin.de/software/tetgen/)

[meshOutput]=runTetGen(inputStruct); %Run tetGen
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- TETGEN Tetrahedral meshing --- 19-Jun-2017 11:59:42
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Writing SMESH file --- 19-Jun-2017 11:59:42
----> Adding node field
----> Adding facet field
----> Adding holes specification
----> Adding region specification
--- Done --- 19-Jun-2017 11:59:42
--- Running TetGen to mesh input boundary--- 19-Jun-2017 11:59:42
Opening /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.smesh.
Delaunizing vertices...
Delaunay seconds:  0.045063
Creating surface mesh ...
Surface mesh seconds:  0.010225
Recovering boundaries...
Boundary recovery seconds:  0.013837
Removing exterior tetrahedra ...
Spreading region attributes.
Exterior tets removal seconds:  0.009348
Recovering Delaunayness...
Delaunay recovery seconds:  0.007065
Refining mesh...
Refinement seconds:  0.37883
Optimizing mesh...
Optimization seconds:  0.037569

Writing /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.1.node.
Writing /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.1.ele.
Writing /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.1.face.
Writing /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.1.edge.

Output seconds:  0.090738
Total running seconds:  0.592941

Statistics:

  Input points: 2964
  Input facets: 5924
  Input segments: 8886
  Input holes: 0
  Input regions: 1

  Mesh points: 9341
  Mesh tetrahedra: 50132
  Mesh faces: 103226
  Mesh faces on exterior boundary: 5924
  Mesh faces on input facets: 5924
  Mesh edges on input segments: 8886
  Steiner points inside domain: 6377

--- Done --- 19-Jun-2017 11:59:43
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Importing TetGen files --- 19-Jun-2017 11:59:43
--- Done --- 19-Jun-2017 11:59:43

Access model element and patch data

Fb=meshOutput.facesBoundary;
Cb=meshOutput.boundaryMarker;
V=meshOutput.nodes;
CE=meshOutput.elementMaterialID;
E=meshOutput.elements;

PLOTTING MODEL

%Selecting half of the model to see interior
Y=V(:,2); YE=mean(Y(E),2);
L=YE>mean(Y);
[Fs,Cs]=element2patch(E(L,:),CE(L),'tet4');

cFigure;
hold on;
title('Cut view of Solid tetrahedral mesh model','FontSize',fontSize);
gpatch(Fb,V,0.5*ones(1,3),'none',faceAlpha1);
gpatch(Fs,V,Cs,'k',faceAlpha2);
plotV(V(unique(Fs(:)),:),'k.','MarkerSize',markerSize);
camlight headlight;
axisGeom(gca,fontSize);
axis off;
colormap(cMap);
drawnow;

MESHING A MULTI-REGION MODEL

Simulating a multiregion mesh

[F1,V1]=parasaurolophus; %A dino
[F2,V2,~]=geoSphere(3,0.4); %An internal region
V2(:,1)=2*V2(:,1);
V_centre=[0.75 0 0.25];
V2=V2+V_centre(ones(size(V2,1),1),:);

%Joining surface sets
F=[F1;F2+size(V1,1)];
V=[V1;V2];
C=[ones(size(F1,1),1);2*ones(size(F2,1),1)]; %Surface marker colors

Plotting model

cFigure; hold on;
title('Surface model','FontSize',fontSize);
gpatch(F,V,C,'k',faceAlpha1);
camlight headlight;
axisGeom(gca,fontSize);
colormap(cMap);

DEFINE FACE BOUNDARY MARKERS

faceBoundaryMarker=C;

Define region points

V_regions=[0.5 0 0;V_centre];

Define hole points

V_holes=[];

Regional mesh parameters

[A]=tetVolMeanEst(F,V);
regionA=[A/2 A];

CREATING THE INPUT STRUCTURE

stringOpt='-pq1.2AaYQ';
inputStruct.stringOpt=stringOpt;
inputStruct.Faces=F;
inputStruct.Nodes=V;
inputStruct.holePoints=V_holes;
inputStruct.faceBoundaryMarker=faceBoundaryMarker; %Face boundary markers
inputStruct.regionPoints=V_regions; %region points
inputStruct.regionA=regionA;
inputStruct.minRegionMarker=2; %Minimum region marker
inputStruct.modelName=modelName;

Mesh model using tetrahedral elements using tetGen (see: http://wias-berlin.de/software/tetgen/)

[meshOutput]=runTetGen(inputStruct); %Run tetGen
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- TETGEN Tetrahedral meshing --- 19-Jun-2017 11:59:45
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Writing SMESH file --- 19-Jun-2017 11:59:45
----> Adding node field
----> Adding facet field
----> Adding holes specification
----> Adding region specification
--- Done --- 19-Jun-2017 11:59:46
--- Running TetGen to mesh input boundary--- 19-Jun-2017 11:59:46
Opening /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.smesh.
--- Done --- 19-Jun-2017 11:59:46
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Importing TetGen files --- 19-Jun-2017 11:59:46
--- Done --- 19-Jun-2017 11:59:46

Access model element and patch data

Fb=meshOutput.facesBoundary;
Cb=meshOutput.boundaryMarker;
V=meshOutput.nodes;
CE=meshOutput.elementMaterialID;
E=meshOutput.elements;

PLOTTING MODEL

%Selecting half of the model to see interior
Y=V(:,2); YE=mean(Y(E),2);
L=YE>mean(Y);
[Fs,Cs]=element2patch(E(L,:),CE(L),'tet4');

cFigure;
hold on;
title('Cut view of Solid tetrahedral mesh model','FontSize',fontSize);
gpatch(Fb,V,0.5*ones(1,3),'none',faceAlpha1);
gpatch(Fs,V,Cs,'k',faceAlpha2);
plotV(V(unique(Fs(:)),:),'k.','MarkerSize',markerSize);
camlight headlight;
axisGeom(gca,fontSize);
axis off;
colormap(cMap);
drawnow;

MESHING A MULTI-REGION MODEL CONTAINING HOLES

Simulating a multiregion mesh

%A dino
[F1,V1]=parasaurolophus;

%An internal region
[F2,V2,~]=geoSphere(2,0.5);
V2(:,1)=2*V2(:,1);

%An internal hole
[F3,V3,~]=geoSphere(3,0.35);

%Centering internal structures
V_centre=[0.75 0 0.25];
V2=V2+V_centre(ones(size(V2,1),1),:);
V3=V3+V_centre(ones(size(V3,1),1),:);

%Joining surface sets
F=[F1;F2+size(V1,1);F3+size(V1,1)+size(V2,1)];
V=[V1;V2;V3];
C=[ones(size(F1,1),1);2*ones(size(F2,1),1);3*ones(size(F3,1),1)]; %Surface marker colors

Plotting model

cFigure; hold on;
title('Surface model','FontSize',fontSize);
gpatch(F,V,C,'k',faceAlpha1);
camlight headlight;
axisGeom(gca,fontSize);
colormap(cMap);
drawnow;

DEFINE FACE BOUNDARY MARKERS

faceBoundaryMarker=C;

Define region points

%Find an interior point in region 1
logicRegion=ismember(faceBoundaryMarker,[1 2]);
[V_in_1]=getInnerPoint(F(logicRegion,:),V);
plotV(V_in_1,'r.','MarkerSize',25);

%Find an interior point in region 1
logicRegion=ismember(faceBoundaryMarker,[2 3]);
[V_in_2]=getInnerPoint(F(logicRegion,:),V);
plotV(V_in_2,'r.','MarkerSize',25);

V_regions=[V_in_1; V_in_2];

Define hole points

V_holes=[V_centre];

Regional mesh parameters

[A]=tetVolMeanEst(F,V);
regionA=[A A/2];

CREATING THE INPUT STRUCTURE

stringOpt='-pq1.2AaQY';

inputStruct.stringOpt=stringOpt;
inputStruct.Faces=F;
inputStruct.Nodes=V;
inputStruct.holePoints=V_holes;
inputStruct.faceBoundaryMarker=faceBoundaryMarker; %Face boundary markers
inputStruct.regionPoints=V_regions; %region points
inputStruct.regionA=regionA;
inputStruct.minRegionMarker=2; %Minimum region marker
inputStruct.modelName=modelName;

Mesh model using tetrahedral elements using tetGen (see: http://wias-berlin.de/software/tetgen/)

[meshOutput]=runTetGen(inputStruct); %Run tetGen
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- TETGEN Tetrahedral meshing --- 19-Jun-2017 11:59:49
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Writing SMESH file --- 19-Jun-2017 11:59:49
----> Adding node field
----> Adding facet field
----> Adding holes specification
----> Adding region specification
--- Done --- 19-Jun-2017 11:59:49
--- Running TetGen to mesh input boundary--- 19-Jun-2017 11:59:49
Opening /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.smesh.
--- Done --- 19-Jun-2017 11:59:50
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Importing TetGen files --- 19-Jun-2017 11:59:50
--- Done --- 19-Jun-2017 11:59:50

Access model element and patch data

Fb=meshOutput.facesBoundary;
Cb=meshOutput.boundaryMarker;
V=meshOutput.nodes;
CE=meshOutput.elementMaterialID;
E=meshOutput.elements;

PLOTTING MODEL

%Selecting half of the model to see interior
Y=V(:,2); YE=mean(Y(E),2);
L=YE>mean(Y);
[Fs,Cs]=element2patch(E(L,:),CE(L),'tet4');

cFigure;
hold on;
title('Cut view of Solid tetrahedral mesh model','FontSize',fontSize);
gpatch(Fb,V,0.5*ones(1,3),'none',faceAlpha1);
gpatch(Fs,V,Cs,'k',faceAlpha2);
plotV(V(unique(Fs(:)),:),'k.','MarkerSize',markerSize);
camlight headlight;
axisGeom(gca,fontSize);
axis off;
colormap(cMap);
drawnow;

Meshing from a quadrilateral input surface

Build a quadrilateral surface

boxDim=[4 5 6];
boxEl=[4 5 6];
[Fq,Vq,faceBoundaryMarker_q]=quadBox(boxDim,boxEl);

CREATING THE INPUT STRUCTURE

[regionA]=tetVolMeanEst(Fq,Vq); %Volume for regular tets

stringOpt='-pq1.2AaYQ';

inputStruct.stringOpt=stringOpt;
inputStruct.Faces=Fq;
inputStruct.Nodes=Vq;
inputStruct.holePoints=[];
inputStruct.faceBoundaryMarker=faceBoundaryMarker_q; %Face boundary markers
inputStruct.regionPoints=[0 0 0]; %region points
inputStruct.regionA=regionA;
inputStruct.minRegionMarker=2; %Minimum region marker
inputStruct.modelName=modelName;

Mesh model using tetrahedral elements using tetGen (see: http://wias-berlin.de/software/tetgen/)

[meshOutput]=runTetGen(inputStruct); %Run tetGen
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- TETGEN Tetrahedral meshing --- 19-Jun-2017 11:59:51
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Writing SMESH file --- 19-Jun-2017 11:59:51
----> Adding node field
----> Adding facet field
----> Adding holes specification
----> Adding region specification
--- Done --- 19-Jun-2017 11:59:51
--- Running TetGen to mesh input boundary--- 19-Jun-2017 11:59:51
Opening /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.smesh.
--- Done --- 19-Jun-2017 11:59:51
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Importing TetGen files --- 19-Jun-2017 11:59:51
--- Done --- 19-Jun-2017 11:59:51

Access model element and patch data

Fb=meshOutput.facesBoundary;
Cb=meshOutput.boundaryMarker;
V=meshOutput.nodes;
CE=meshOutput.elementMaterialID;
E=meshOutput.elements;

PLOTTING MODEL

%Selecting half of the model to see interior
Y=V(:,2); YE=mean(Y(E),2);
L=YE>mean(Y);
[Fs,Cs]=element2patch(E(L,:),CE(L),'tet4');

cFigure;
hold on;
title('Cut view of Solid tetrahedral mesh model','FontSize',fontSize);
gpatch(Fb,V,0.5*ones(1,3),'none',faceAlpha1);
gpatch(Fs,V,Cs,'k',faceAlpha2);
plotV(V(unique(Fs(:)),:),'k.','MarkerSize',markerSize);
camlight headlight;
axisGeom(gca,fontSize);
axis off;
colormap(cMap);
drawnow;

Meshing 10-node (i.e. quadratic) tetrahedral elements

% Building spherical surface models
r1=1;
r2=2*(r1/3);
r3=r1/3;
[F_sphere,V_sphere,~]=geoSphere(2,r1);
[F_core,V_core,~]=geoSphere(1,r2);
[F_core2,V_core2,~]=geoSphere(1,r3);

% Merging node sets
V1=[V_sphere;V_core;V_core2];

F1=[F_sphere;F_core+size(V_sphere,1);F_core2+size(V_sphere,1)+size(V_core,1)];

% Face boundary markers
faceBoundaryMarker=[ones(size(F_sphere,1),1); 2*ones(size(F_core,1),1);  3*ones(size(F_core2,1),1)];

Define region point

V_regions=[0 0 (r1+r2)/2;0 0 (r2+r3)/2;];

% Define hole points
V_holes=[0 0 0];

% Regional mesh parameter (desired volume)
[A]=tetVolMeanEst(F1,V1);
regionA=A*ones(1,2);

stringOpt='-pq1.2AaYQ';

inputStruct.stringOpt=stringOpt;
inputStruct.Faces=F1;
inputStruct.Nodes=V1;
inputStruct.holePoints=V_holes;
inputStruct.faceBoundaryMarker=faceBoundaryMarker; %Face boundary markers
inputStruct.regionPoints=V_regions; %region points
inputStruct.regionA=regionA;
inputStruct.minRegionMarker=2; %Minimum region marker
inputStruct.modelName=modelName;

Setting desired element type to tet10 (default is tet4)

inputStruct.tetType='tet10';

Mesh model using tetrahedral elements using tetGen (see: http://wias-berlin.de/software/tetgen/)

[meshOutput]=runTetGen(inputStruct); %Run tetGen
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- TETGEN Tetrahedral meshing --- 19-Jun-2017 11:59:52
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Writing SMESH file --- 19-Jun-2017 11:59:52
----> Adding node field
----> Adding facet field
----> Adding holes specification
----> Adding region specification
--- Done --- 19-Jun-2017 11:59:52
--- Running TetGen to mesh input boundary--- 19-Jun-2017 11:59:52
Opening /mnt/data/MATLAB/GIT/GIBBON/lib_ext/tetGen/tempFiles/tetgenmodel.smesh.
--- Done --- 19-Jun-2017 11:59:52
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--- Importing TetGen files --- 19-Jun-2017 11:59:52
--- Done --- 19-Jun-2017 11:59:52

Access model element and patch data

Fb=meshOutput.facesBoundary;
Cb=meshOutput.boundaryMarker;
V=meshOutput.nodes;
CE=meshOutput.elementMaterialID;
E=meshOutput.elements;

PLOTTING MODEL

%Selecting half of the model to see interior
Y=V(:,2); YE=mean(Y(E),2);
L=YE>mean(Y);
[Fs,Cs]=element2patch(E(L,:),CE(L),'tet10');

cFigure;
hold on;
title('Cut view of Solid tetrahedral mesh model','FontSize',fontSize);
gpatch(Fb,V,0.5*ones(1,3),'none',faceAlpha1);
gpatch(Fs,V,Cs,'k',faceAlpha2);
plotV(V(unique(Fs(:)),:),'k.','MarkerSize',markerSize);
camlight headlight;
axisGeom(gca,fontSize);
axis off;
colormap(cMap);
drawnow;

GIBBON www.gibboncode.org

Kevin Mattheus Moerman, [email protected]