1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
|
## Copyright (C) 2024 David Legland
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions are met:
##
## 1 Redistributions of source code must retain the above copyright notice,
## this list of conditions and the following disclaimer.
## 2 Redistributions in binary form must reproduce the above copyright
## notice, this list of conditions and the following disclaimer in the
## documentation and/or other materials provided with the distribution.
##
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ''AS IS''
## AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
## ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
## ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
## SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
## CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
##
## The views and conclusions contained in the software and documentation are
## those of the authors and should not be interpreted as representing official
## policies, either expressed or implied, of the copyright holders.
%CONTENTS MESHES3D 3D Surface Meshes.
% Version 1.22 06-Jun-2018.
%
% Creation, visualization, and manipulation of 3D surface meshes or
% polyhedra.
%
% Meshes and Polyhedra are represented by a couple of variables {V, F}:
% V: Nv-by-3 array of vertices: [x1 y1 z1; ... ; xn yn zn];
% F: is either a NF-by-3 or NF-by-4 array containing reference for
% vertices of each face, or a NF-by-1 cell array, where each cell is an
% array containing a variable number of node indices.
% For some functions, the array E of edges is needed. It consists in a
% NE-by-2 array containing indices of source and target vertices.
%
% The library provides function to create basic polyhedric meshes (the
% five platonic solids, plus few others), as well as functions to perform
% basic computations (surface area, normal angles, face centroids...).
% The 'MengerSponge' structure is an example of mesh that is not simply
% connected (multiple tunnels in the structure).
%
% The drawMesh function is mainly a wrapper to the Matlab 'patch'
% function, allowing passing arguments more quickly.
%
% Example
% % create a soccer ball mesh and display it
% [v, e, f] = createSoccerBall;
% drawMesh(v, f, 'faceColor', 'g', 'linewidth', 2);
% axis equal; view(3);
%
%
% General processing on meshes
% smoothMesh - Smooth mesh by replacing each vertex by the average of its neighbors.
% subdivideMesh - Subdivides each face of the mesh.
% meshVertexClustering - Simplifies a mesh using vertex clustering.
% triangulateFaces - Convert face array to an array of triangular faces.
% transformMesh - Applies a 3D affine transform to a mesh.
% mergeCoplanarFaces - Merge coplanar faces of a polyhedral mesh.
% meshFacePolygons - Returns the set of polygons that constitutes a mesh.
% meshFaceCentroids - Compute centroids of faces in a mesh.
% meshFaceNormals - Compute normal vector of faces in a 3D mesh.
% meshVertexNormals - Compute normals to a mesh vertices.
% meshComplement - Reverse the normal of each face in the mesh.
% averageMesh - Compute average mesh from a list of meshes.
% meshSilhouette - Compute the 2D outline of a 3D mesh on an arbitrary plane.
% meshVoronoiDiagram - Voronoi Diagram on the surface of a polygonal mesh.
%
% Intersections and clipping
% intersectLineMesh3d - Intersection points of a 3D line with a mesh.
% intersectEdgeMesh3d - Intersection points of a 3D edge with a mesh.
% intersectPlaneMesh - Compute the polygons resulting from plane-mesh intersection.
% polyhedronSlice - Intersect a convex polyhedron with a plane.
% clipMeshByPlane - Clip a mesh by a plane.
% clipMeshVertices - Clip vertices of a surfacic mesh and remove outer faces.
% clipConvexPolyhedronByPlane - Clip a convex polyhedron by a plane.
% cutMeshByPlane - Cut a mesh by a plane.
% concatenateMeshes - Concatenate multiple meshes.
% splitMesh - Return the connected components of a mesh.
%
% Geometric measures on meshes
% meshSurfaceArea - Surface area of a polyhedral mesh.
% trimeshSurfaceArea - Surface area of a triangular mesh.
% meshFaceAreas - Surface area of each face of a mesh.
% meshVolume - (Signed) volume of the space enclosed by a polygonal mesh.
% meshCurvatures - Compute principal curvatures on mesh vertices.
% meshEdgeLength - Lengths of edges of a polygonal or polyhedral mesh.
% meshDihedralAngles - Dihedral at edges of a polyhedal mesh.
% polyhedronCentroid - Compute the centroid of a 3D convex polyhedron.
% tetrahedronVolume - Signed volume of a tetrahedron.
% polyhedronNormalAngle - Compute normal angle at a vertex of a 3D polyhedron.
% polyhedronMeanBreadth - Mean breadth of a convex polyhedron.
% trimeshMeanBreadth - Mean breadth of a triangular mesh.
% isPointInMesh - Check if a point is inside a 3D mesh.
% distancePointMesh - Shortest distance between a (3D) point and a triangle mesh.
%
% Utility functions
% meshFace - Return the vertex indices of a face in a mesh.
% meshFaceEdges - Computes edge indices of each face.
% meshFaceNumber - Returns the number of faces in this mesh.
% meshEdges - Computes array of edge vertex indices from face array.
% meshEdgeFaces - Compute index of faces adjacent to each edge of a mesh.
% trimeshEdgeFaces - Compute index of faces adjacent to each edge of a triangular mesh.
% meshFaceAdjacency - Compute adjacency list of face around each face.
% meshAdjacencyMatrix - Compute adjacency matrix of a mesh from set of faces.
% checkMeshAdjacentFaces - Check if adjacent faces of a mesh have similar orientation.
% meshBoundary - Boundary of a mesh as a collection of 3D line strings.
% meshBoundaryEdges - Determine the boundary edges of a mesh.
% meshBoundaryEdgeIndices - Indices of boundary edges of a mesh.
% meshBoundaryVertexIndices - Indices of boundary vertices of a mesh.
% smoothMeshFunction - Apply smoothing on a functions defines on mesh vertices.
%
% Basic edition on meshes
% removeMeshVertices - Remove vertices and associated faces from a mesh.
% mergeMeshVertices - Merge two vertices and removes eventual degenerated faces.
% removeMeshFaces - Remove faces from a mesh by face indices.
%
% Mesh cleanup
% trimMesh - Reduce memory footprint of a polygonal mesh.
% isManifoldMesh - Check whether the input mesh may be considered as manifold.
% ensureManifoldMesh - Apply several simplification to obtain a manifold mesh.
% removeDuplicateFaces - Remove duplicate faces in a face array.
% removeDuplicateVertices - Remove duplicate vertices of a mesh.
% removeUnreferencedVertices - Remove unreferenced vertices of a mesh.
% removeMeshEars - Remove vertices that are connected to only one face.
% removeInvalidBorderFaces - Remove faces whose edges are connected to 3, 3, and 1 faces.
% collapseEdgesWithManyFaces - Remove mesh edges adjacent to more than two faces.
%
% Creation and conversion
% surfToMesh - Convert surface grids into face-vertex mesh.
% triangulateCurvePair - Compute triangulation between a pair of 3D open curves.
% triangulatePolygonPair3d - Compute a triangulation between a pair of 3D polygons.
% triangulatePolygonPair - Compute triangulation between a pair of 3D closed curves.
% circleMesh - Create a mesh defined by a 3D circle.
% cylinderMesh - Create a 3D mesh representing a cylinder.
% sphereMesh - Create a 3D mesh representing a sphere.
% ellipsoidMesh - Convert a 3D ellipsoid to face-vertex mesh representation.
% torusMesh - Create a 3D mesh representing a torus.
% curveToMesh - Create a mesh surrounding a 3D curve.
% boxToMesh - Convert a box into a quad mesh with the same size.
% minConvexHull - Return the unique minimal convex hull of a set of 3D points.
%
% Create meshes representing polyhedra
% polyhedra - Index of classical polyhedral meshes.
% createCube - Create a 3D mesh representing the unit cube.
% createOctahedron - Create a 3D mesh representing an octahedron.
% createCubeOctahedron - Create a 3D mesh representing a cube-octahedron.
% createIcosahedron - Create a 3D mesh representing an Icosahedron.
% createDodecahedron - Create a 3D mesh representing a dodecahedron.
% createTetrahedron - Create a 3D mesh representing a tetrahedron.
% createRhombododecahedron - Create a 3D mesh representing a rhombododecahedron.
% createTetrakaidecahedron - Create a 3D mesh representing a tetrakaidecahedron.
% createSoccerBall - Create a 3D mesh representing a soccer ball.
% createStellatedMesh - Replaces each face of a mesh by a pyramid.
% createDurerPolyhedron - Create a mesh representing Durer's polyhedron .
% createMengerSponge - Create a cube with an inside cross removed.
% steinerPolytope - Create a steiner polytope from a set of vectors.
%
% Drawing functions
% drawMesh - Draw a 3D mesh defined by vertex and face arrays.
% drawPolyhedron - Draw polyhedron defined by vertices and faces.
% fillMeshFaces - Fill the faces of a mesh with the specified colors.
% drawFaceNormals - Draw normal vector of each face in a mesh.
%
% I/O functions
% readMesh - Read a 3D mesh by inferring format from file name.
% writeMesh - Write 3D mesh data by inferring format from file name.
% readMesh_off - Read mesh data stored in OFF format.
% readMesh_obj - Read mesh data stored in OBJ format.
% readMesh_ply - Read mesh data stored in PLY (Stanford triangle) format.
% readMesh_stl - Read mesh data stored in STL format.
% writeMesh_off - Write a mesh into a text file in OFF format.
% writeMesh_ply - Write a mesh into a file in PLY format.
% writeMesh_stl - Write mesh data in the STL format.
%
% ------
% Author: David Legland
% E-mail: david.legland@inrae.fr
% Created: 2005-11-07
% Copyright 2005-2023 INRAE
help(mfilename);
|