getInnerPoint

Below is a demonstration of the features of the getInnerPoint function

Contents

clear; close all; clc;

Syntax

%|[V_inner,M,G,ML,voxelSize]=getInnerPoint(F,V,searchRadius,voxelSize,plotOn)|
% |[varargout]=getInnerPoint(varargin);|

Description

This function computes an arbitrary interior point for the input geometry. The function uses patch2Im to convert the geometry to an image description. Next the interior voxel set is convolution with a spherical kernel of a desired size. An interior point is then chosen based on the location with the maximum output in the convoluted image. In plainer English this means that an attempt is made to find a point that is inside the geometry and approximately the spherical kernel radius offset inwards from the boundary. Input consists of the faces F, the vertices V, the searchRadius (kernel radius), the voxelSize, and a plotting option plotOn. The voxel size should be shall enough such that interior (and not just boundary) voxels can be found. Interior voxels and fully inside the geometry and do not touch the boundary.

Plot settings

markerSize=50;

Examples

Example 1: Basic use to find an arbitrary point inside the input geometry

Create example geometry

testCase=3;
switch testCase
    case 1
        [F,V]=geoSphere(1,1);
    case 2
        [F,V]=stanford_bunny;
    case 3
        [F,V]=graphicsModels(4);
end

Find interior point using default settings

V_in=getInnerPoint(F,V);
cFigure;
subplot(1,2,1); hold on;
gpatch(F,V,'gw');
axisGeom; camlight headlight;

subplot(1,2,2); hold on;
gpatch(F,V,'gw','none',0.5);
plotV(V_in,'r.','MarkerSize',markerSize)
axisGeom; camlight headlight;
drawnow;

Example: using full input/output set

D=patchEdgeLengths(F,V); %Get edge lengths
voxelSize=mean(D)/2; %Set voxel size as half of the mean edge length
searchRadius=3*voxelSize; %Use 3 voxel search radius
plotOn=1;
[V_in,M,G,ML,voxelSize]=getInnerPoint(F,V,searchRadius,voxelSize,plotOn);

Visualize geometry interior/boundary label image

sv3(M,voxelSize);

Visualize geometry convoluted interior image

sv3(ML,voxelSize); colormap gjet;

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-2022 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/.