patchcylinder

Below is a demonstration of the features of the patchcylinder function

Contents

Syntax

[F,V]=patchcylinder(r,nr,h,nz,ptype);

Description

Use patchcylinder to generate triangulated spheres with nearly geodesic triangle distributions. The density of the triangulation can be controlled through a particular choice of n (number of mesh refinement steps).

Examples

clear; close all; clc;

Plot Settings

fontSize=15;
faceAlpha=0.8;
edgeColor=0.*ones(1,3);
edgeWidth=2;

Building a patched cylinder model

Defining patched cylinders with different mesh types

cylRaduis=1; %Cylinder radius
numRadial=12; %Number of elements in the circumferential direction
cylHeight=3; %height
numSteps=7; %Number of elements in the height direction
meshTypes={'quad','tri_slash','tri'}; %Patch Types

pColors=gjet(numel(meshTypes));

Creating and visualizing patch data

cFigure;
for q=1:1:numel(meshTypes)
    [F,V]=patchcylinder(cylRaduis,numRadial,cylHeight,numSteps,meshTypes{q});
    subplot(1,3,q); hold on;
    title([meshTypes{q},' type cylinder'],'FontSize',fontSize,'Interpreter','none');
    axisGeom(gca,fontSize);
    gpatch(F,V,pColors(q,:));
    patchNormPlot(F,V);
    camlight headlight;
end
drawnow;

Using an input structure instead

Creating input structure

inputStruct.cylRadius=1;
inputStruct.numRadial=15;
inputStruct.cylHeight=3;
inputStruct.numHeight=11;
inputStruct.meshType='tri';

Derive patch data for a cylinder

[F,V]=patchcylinder(inputStruct);

Visualizing cylinder model

cFigure;
hold on;
gpatch(F,V,'g');
% patchNormPlot(F,V);
axisGeom(gca,fontSize);
camlight headlight;
drawnow;

Creating a closed cylinder model

% Creating input structure
inputStruct.cylRadius=1;
inputStruct.numRadial=15;
inputStruct.cylHeight=3;
inputStruct.numHeight=[]; %if empty infer from point spacing of circle
inputStruct.meshType='tri';
inputStruct.closeOpt=1;

Derive patch data for a cylinder

[F,V,C]=patchcylinder(inputStruct);

Visualizing meshed regions

cFigure;
gpatch(F,V,C);
patchNormPlot(F,V);
colormap(gjet(3)); icolorbar;
axisGeom;
camlight headlight;
drawnow;

GIBBON www.gibboncode.org

Kevin Mattheus Moerman, [email protected]

GIBBON footer text

License: https://github.com/gibbonCode/GIBBON/blob/master/LICENSE

GIBBON: The Geometry and Image-based Bioengineering add-On. A toolbox for image segmentation, image-based modeling, meshing, and finite element analysis.

Copyright (C) 2006-2021 Kevin Mattheus Moerman and the GIBBON contributors

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.