Home > matGeom > meshes3d > tetrahedronVolume.m

tetrahedronVolume

PURPOSE ^

TETRAHEDRONVOLUME Signed volume of a tetrahedron.

SYNOPSIS ^

function vol = tetrahedronVolume(vertices, varargin)

DESCRIPTION ^

TETRAHEDRONVOLUME Signed volume of a tetrahedron.

   VOL = tetrahedronVolume(TETRA)
   Comptues the siged volume of the tetrahedron TETRA defined by a 4-by-4
   array representing the polyhedron vertices.

   Example
     vi = [0 0 0;1 0 0;0 1 0;0 0 1];
     tetrahedronVolume(vi)
     ans = 
         0.1667

     [V F] = createTetrahedron;
     tetrahedronVolume(V)
     ans = 
         -.3333

   See also
   meshes3d, createTetrahedron, meshVolume

 ------
 Author: David Legland
 e-mail: david.legland@grignon.inra.fr
 Created: 2012-04-05,    using Matlab 7.9.0.529 (R2009b)
 Copyright 2012 INRA - Cepia Software Platform.

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function vol = tetrahedronVolume(vertices, varargin)
0002 %TETRAHEDRONVOLUME Signed volume of a tetrahedron.
0003 %
0004 %   VOL = tetrahedronVolume(TETRA)
0005 %   Comptues the siged volume of the tetrahedron TETRA defined by a 4-by-4
0006 %   array representing the polyhedron vertices.
0007 %
0008 %   Example
0009 %     vi = [0 0 0;1 0 0;0 1 0;0 0 1];
0010 %     tetrahedronVolume(vi)
0011 %     ans =
0012 %         0.1667
0013 %
0014 %     [V F] = createTetrahedron;
0015 %     tetrahedronVolume(V)
0016 %     ans =
0017 %         -.3333
0018 %
0019 %   See also
0020 %   meshes3d, createTetrahedron, meshVolume
0021 %
0022 % ------
0023 % Author: David Legland
0024 % e-mail: david.legland@grignon.inra.fr
0025 % Created: 2012-04-05,    using Matlab 7.9.0.529 (R2009b)
0026 % Copyright 2012 INRA - Cepia Software Platform.
0027 
0028 if nargin == 2
0029     tetras = varargin{1};
0030     nTetras = size(tetras, 1);
0031     vol = zeros(nTetras, 1);
0032     for i = 1:nTetras
0033         tetra = tetras(i,:);
0034         vol(i) = det(bsxfun(@minus, vertices(tetra(2:4),:), vertices(tetra(1),:))) / 6;
0035     end
0036     return;
0037 end
0038 
0039 % control on inputs
0040 if nargin == 4
0041     vertices = [vertices ; varargin{1} ; varargin{2} ; varargin{3}];
0042 end
0043 
0044 if size(vertices, 1) < 4
0045     error('Input vertex array requires at least 4 vertices');
0046 end
0047 
0048 % compute volume of tetrahedron, using first vertex as origin
0049 vol = det(vertices(2:4,:) - vertices([1 1 1],:)) / 6;

Generated on Wed 16-Feb-2022 15:10:47 by m2html © 2003-2019