From beed91847b3f749ef66d91a27236259b2143d100 Mon Sep 17 00:00:00 2001 From: dlegland Date: Wed, 20 Dec 2023 11:47:39 +0100 Subject: [PATCH] update user manual --- .../demo_distancePointMesh_dodecahedron.m | 35 ++ .../distancePointMesh_dodecahedron_init.png | Bin 0 -> 15480 bytes .../distancePointMesh_dodecahedron_view3d.png | Bin 0 -> 67780 bytes .../demo_polygonSignature_rectangle.m | 45 ++ .../polygonSignature_rectangle_init.png | Bin 0 -> 14295 bytes .../polygonSignature_rectangle_signature.png | Bin 0 -> 31160 bytes docs/matGeom-manual/matGeom-manual.lyx | 580 ++++++++++++++---- docs/matGeom-manual/matGeom.bib | 8 + 8 files changed, 540 insertions(+), 128 deletions(-) create mode 100644 docs/matGeom-manual/images/meshes3d/distancePointMesh/demo_distancePointMesh_dodecahedron.m create mode 100644 docs/matGeom-manual/images/meshes3d/distancePointMesh/distancePointMesh_dodecahedron_init.png create mode 100644 docs/matGeom-manual/images/meshes3d/distancePointMesh/distancePointMesh_dodecahedron_view3d.png create mode 100644 docs/matGeom-manual/images/polygons2d/polygonSignature/demo_polygonSignature_rectangle.m create mode 100644 docs/matGeom-manual/images/polygons2d/polygonSignature/polygonSignature_rectangle_init.png create mode 100644 docs/matGeom-manual/images/polygons2d/polygonSignature/polygonSignature_rectangle_signature.png diff --git a/docs/matGeom-manual/images/meshes3d/distancePointMesh/demo_distancePointMesh_dodecahedron.m b/docs/matGeom-manual/images/meshes3d/distancePointMesh/demo_distancePointMesh_dodecahedron.m new file mode 100644 index 00000000..d8e86e29 --- /dev/null +++ b/docs/matGeom-manual/images/meshes3d/distancePointMesh/demo_distancePointMesh_dodecahedron.m @@ -0,0 +1,35 @@ +%DEMO_DISTANCEPOINTMESH_DODECAHEDRON One-line description here, please. +% +% output = demo_distancePointMesh_dodecahedron(input) +% +% Example +% demo_distancePointMesh_dodecahedron +% +% See also +% + +% ------ +% Author: David Legland +% e-mail: david.legland@inrae.fr +% INRAE - BIA Research Unit - BIBS Platform (Nantes) +% Created: 2023-12-20, using Matlab 23.2.0.2409890 (R2023b) Update 3 +% Copyright 2023 INRAE. + +mesh = createDodecahedron; +mesh.vertices = mesh.vertices * 30 + 50; + +hf1 = figure; hold on; axis equal; axis([0 100 0 100 0 100]); view(3); +drawMesh(mesh, 'faceAlpha', 0.5, 'faceColor', [.5 .5 .5]); +print(gcf, 'distancePointMesh_dodecahedron_init.png', '-dpng'); + +[x, y] = meshgrid(1:100, 1:100); +z = ones(size(x)) * 50; + +pts = [x(:) y(:) z(:)]; +distMap = reshape(distancePointMesh(pts, mesh), size(x)); +figure; imshow(distMap, [0 max(distMap(:))]); colormap('parula'); + +figure(hf1); +surf(x, y, z, distMap, 'linestyle', 'none'); +print(gcf, 'distancePointMesh_dodecahedron_view3d.png', '-dpng'); + diff --git a/docs/matGeom-manual/images/meshes3d/distancePointMesh/distancePointMesh_dodecahedron_init.png b/docs/matGeom-manual/images/meshes3d/distancePointMesh/distancePointMesh_dodecahedron_init.png new file mode 100644 index 0000000000000000000000000000000000000000..419fdc11f02b97351a7f82a574fc2548dc0fb3ac GIT binary patch literal 15480 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 Q3$qAyWgVq_h3o$R0npdjX#fBK literal 0 HcmV?d00001 diff --git a/docs/matGeom-manual/images/meshes3d/distancePointMesh/distancePointMesh_dodecahedron_view3d.png b/docs/matGeom-manual/images/meshes3d/distancePointMesh/distancePointMesh_dodecahedron_view3d.png new file mode 100644 index 0000000000000000000000000000000000000000..29ac2997a00f64633c9c19454b547e86d7b66623 GIT binary patch literal 67780 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 literal 0 HcmV?d00001 diff --git a/docs/matGeom-manual/images/polygons2d/polygonSignature/polygonSignature_rectangle_signature.png b/docs/matGeom-manual/images/polygons2d/polygonSignature/polygonSignature_rectangle_signature.png new file mode 100644 index 0000000000000000000000000000000000000000..19181032dac859d8cb93508271daa9c5cd12d81c GIT binary patch literal 31160 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 b>D39lbwzb-^&8q05)#YxjYTO-Hyrp6*Ft7h literal 0 HcmV?d00001 diff --git a/docs/matGeom-manual/matGeom-manual.lyx b/docs/matGeom-manual/matGeom-manual.lyx index 15f91c6b..3ac6f411 100644 --- a/docs/matGeom-manual/matGeom-manual.lyx +++ b/docs/matGeom-manual/matGeom-manual.lyx @@ -248,10 +248,6 @@ add bibliography \end_layout \begin_deeper -\begin_layout Itemize -Greg Slabaugh -\end_layout - \begin_layout Itemize Ilya Belevich \end_layout @@ -4647,47 +4643,6 @@ noprefix "false" . \end_layout -\begin_layout Standard -For rectangular shapes, several representations may be considered. - The following conventions are considered within the MatGeom library (See - also Figure -\begin_inset space ~ -\end_inset - - -\begin_inset CommandInset ref -LatexCommand ref -reference "fig:Boxes-And-Rectangles" -plural "false" -caps "false" -noprefix "false" - -\end_inset - -): -\end_layout - -\begin_layout Description -boxes are defined from the extent along each dimension. -\end_layout - -\begin_layout Description -(axis-aligned) -\begin_inset space ~ -\end_inset - -rectangles are defined from the lower-left corner and the dimensions. -\end_layout - -\begin_layout Description -oriented -\begin_inset space ~ -\end_inset - -boxes also takes into account orientation, and refer to the center of the - rectangle instead of its corner. -\end_layout - \begin_layout Standard \begin_inset Float figure wide false @@ -4814,12 +4769,97 @@ Representation of boxes, rectangles, and oriented boxes. \end_layout +\begin_layout Standard +For rectangular shapes, several representations may be considered. + The following conventions are considered within the MatGeom library (See + also Figure +\begin_inset space ~ +\end_inset + + +\begin_inset CommandInset ref +LatexCommand ref +reference "fig:Boxes-And-Rectangles" +plural "false" +caps "false" +noprefix "false" + +\end_inset + +): +\end_layout + +\begin_layout Description +boxes are defined from the extent along each dimension. + Functions operating on boxes are described in section +\begin_inset CommandInset ref +LatexCommand ref +reference "subsec:Boxes" +plural "false" +caps "false" +noprefix "false" + +\end_inset + +. +\end_layout + +\begin_layout Description +(axis-aligned) +\begin_inset space ~ +\end_inset + +rectangles are defined from the lower-left corner and the dimensions. + Functions operating on rectangles are described in section +\begin_inset CommandInset ref +LatexCommand ref +reference "subsec:Rectangles" +plural "false" +caps "false" +noprefix "false" + +\end_inset + +. +\end_layout + +\begin_layout Description +oriented +\begin_inset space ~ +\end_inset + +boxes are also defined based on their dimensions, but also takes into account + the orientation (angle with horizontal). + The reference point is the center of the rectangle instead of its corner. + Functions operating on oriented boxes are described in section +\begin_inset CommandInset ref +LatexCommand ref +reference "subsec:Oriented-Boxes" +plural "false" +caps "false" +noprefix "false" + +\end_inset + +. +\end_layout + \begin_layout Subsection Boxes \end_layout \begin_layout Standard -Boxes are used to represent bounds. +\begin_inset CommandInset label +LatexCommand label +name "subsec:Boxes" + +\end_inset + + +\end_layout + +\begin_layout Standard +Boxes are used to represent bounds of geometric shapes. They are represented by a four-element row vector containing the minimum and maximum coordinate along each dimension (Figure \begin_inset space ~ @@ -4876,7 +4916,9 @@ intersectBoxes \end_layout \begin_layout Standard -Intersection of two bounding boxes. +Computes the intersection of two bounding boxes, as the largest box contained + within the two input boxes. + \end_layout \begin_layout Minisec @@ -4895,6 +4937,7 @@ mergeBoxes \begin_layout Standard Merges two boxes, by computing their greatest extent. + The result corresponds to the smallest box containing the two input boxes. \end_layout \begin_layout Minisec @@ -4973,6 +5016,16 @@ Draws a box defined by coordinate extents. Rectangles \end_layout +\begin_layout Standard +\begin_inset CommandInset label +LatexCommand label +name "subsec:Rectangles" + +\end_inset + + +\end_layout + \begin_layout Standard A rectangle is represented by the coordinates of the lower-left vertex, and by the dimensions of the rectangle (Figure @@ -4990,6 +5043,7 @@ noprefix "false" \end_inset -b). + \end_layout \begin_layout Standard @@ -5008,7 +5062,8 @@ rect = [x0 y0 sizeX sizeY]; \end_layout \begin_layout Standard -Some functions allow to specify a fifth parameter specifying the orientation +By default, the edges of the rectangle are aligned with the main axes. + Some functions allow to specify a fifth parameter specifying the orientation of the rectangle (in degrees). The resulting shape is obtained by rotating the rectangle around its lower-left corner by the specified angle. @@ -5072,8 +5127,19 @@ Draws rectangle on the current axis. Oriented boxes \end_layout +\begin_layout Standard +\begin_inset CommandInset label +LatexCommand label +name "subsec:Oriented-Boxes" + +\end_inset + + +\end_layout + \begin_layout Standard In some cases, it may be convenient to take into orientation of the box. + For example, minimum-width bounding boxes are oriented. An oriented box is represented by the coordinates of the center, the dimensions of the rectangle, and the orientation of the box (Figure \begin_inset space ~ @@ -5166,11 +5232,12 @@ Triangles \end_layout \begin_layout Standard -Triangles are simply represented by a +Utility functions are also provided for working on triangles. + Triangles are simply represented by a \begin_inset Formula $3\times2$ \end_inset - numeric array containing the coordinates of the three vertex points. + numeric array containing the coordinates of the three vertices. \end_layout \begin_layout Minisec @@ -5209,6 +5276,13 @@ triangleArea Computes the signed area of a triangle. \end_layout +\begin_layout Standard +\begin_inset Newpage newpage +\end_inset + + +\end_layout + \begin_layout Section Geometric transforms \end_layout @@ -5327,7 +5401,57 @@ createTranslation \end_layout \begin_layout Standard -Creates the 3-by-3 matrix of a translation. +Creates the 3-by-3 matrix of a translation, given the components of the + translation vector. + If the translation vector is given by +\begin_inset Formula $\mathbf{v}$ +\end_inset + +, the resulting matrix is given by: +\begin_inset Formula +\[ +T_{\mathbf{v}}=\left(\begin{array}{ccc} +1 & 0 & v_{x}\\ +0 & 1 & v_{y}\\ +0 & 0 & 1 +\end{array}\right) +\] + +\end_inset + +Example: +\begin_inset listings +inline false +status open + +\begin_layout Plain Layout + +>> createTranslation([5 4]) +\end_layout + +\begin_layout Plain Layout + +ans = +\end_layout + +\begin_layout Plain Layout + + 1 0 5 +\end_layout + +\begin_layout Plain Layout + + 0 1 4 +\end_layout + +\begin_layout Plain Layout + + 0 0 1 +\end_layout + +\end_inset + + \end_layout \begin_layout Minisec @@ -5412,12 +5536,16 @@ createRotation90 \begin_layout Standard Matrix of a rotation around the origin by multiples of 90 degrees. - Matrix values are therefore only + Matrix components values are therefore only \begin_inset Formula $0$ +\end_inset + +, +\begin_inset Formula $+1$ \end_inset or -\begin_inset Formula $\pm1$ +\begin_inset Formula $-1$ \end_inset . @@ -5540,7 +5668,7 @@ createLineReflection \end_layout \begin_layout Standard -Creates the the 3-by-3 matrix of a line reflection. +Computes the the 3-by-3 transformation matrix corresponding to a line reflection. \end_layout \begin_layout Subsection @@ -5597,25 +5725,21 @@ literal "false" . \end_layout -\begin_layout Minisec -polynomialTransform2d -\begin_inset Index idx -status collapsed +\begin_layout Standard +\begin_inset Newpage newpage +\end_inset -\begin_layout Plain Layout -polynomialTransform2d -\end_layout -\end_inset +\end_layout - +\begin_layout Subsection +Polynomial transforms \end_layout \begin_layout Standard -Applies a polynomial transform to a set of points. - The polynomial transform is represented by a row vector containing the - coefficients applied to each monomial, in increasing order of degree and - starting with largest degree of +A polynomial transform is represented by a row vector containing the coefficient +s applied to each monomial, in increasing order of degree and starting with + largest degree of \begin_inset Formula $x$ \end_inset @@ -5650,6 +5774,25 @@ y^{2} \end_inset +\end_layout + +\begin_layout Minisec +polynomialTransform2d +\begin_inset Index idx +status collapsed + +\begin_layout Plain Layout +polynomialTransform2d +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Applies a polynomial transform to a set of points. + \end_layout \begin_layout Minisec @@ -6124,36 +6267,29 @@ For multiple polygons, the different connected boundaries are separated \end_layout \begin_layout Standard -\begin_inset Note Note -status open - -\begin_layout Plain Layout Example: -\end_layout - -\begin_layout Plain Layout \begin_inset listings inline false status open \begin_layout Plain Layout -% Simple polygon: +% Simple polygon (square shape) \end_layout \begin_layout Plain Layout -P1 = [1 1;2 1;2 2;1 2]; +poly1 = [1 1; 2 1; 2 2; 1 2]; \end_layout \begin_layout Plain Layout -drawPolygon(P1); +figure; hold on; axis equal; axis([0 5 0 5]); \end_layout \begin_layout Plain Layout -axis([0 5 0 5]); +drawPolygon(poly1); \end_layout \begin_layout Plain Layout @@ -6163,17 +6299,17 @@ axis([0 5 0 5]); \begin_layout Plain Layout -P2 = [10 10;40 10;40 40;10 40;NaN NaN;20 20;20 30;30 30;30 20]; +poly2 = [10 10;40 10; 40 40;10 40;NaN NaN;20 20;20 30;30 30;30 20]; \end_layout \begin_layout Plain Layout -figure; drawPolygon(P2); axis([0 50 0 50]); +figure; hold on; axis equal; axis([0 50 0 50]); \end_layout -\end_inset - +\begin_layout Plain Layout +fillPolygon(poly2, 'y'); drawPolygon(poly2, 'b'); \end_layout \end_inset @@ -6209,7 +6345,9 @@ Parametrization \end_layout \begin_layout Standard -Polylines and polygons are parametrized in the following way: +Parametrization associates a position to each point of a polyline, or of + a polygon boundary. + Polylines and polygons are parametrized in the following way: \end_layout \begin_layout Itemize @@ -6261,6 +6399,13 @@ The parametrization domain for an open polyline is from correspond to the same point). \end_layout +\begin_layout Standard +\begin_inset Newpage newpage +\end_inset + + +\end_layout + \begin_layout Section Basic operations \end_layout @@ -6482,6 +6627,13 @@ polylineSubcurve Extracts the portion of a polyline located between two positions. \end_layout +\begin_layout Standard +\begin_inset Newpage newpage +\end_inset + + +\end_layout + \begin_layout Subsection Measures \end_layout @@ -6792,12 +6944,72 @@ polygonSignature \end_layout \begin_layout Standard -Polar signature of a polygon (polar distance to origin). -\begin_inset Note Note +Polar signature of a polygon, defined as the polar distance of a polygon + point to the origin or to a reference point. + See the Figure +\begin_inset space ~ +\end_inset + + +\begin_inset CommandInset ref +LatexCommand ref +reference "fig:Polar-Signature-Polygon" +plural "false" +caps "false" +noprefix "false" + +\end_inset + + for an example. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false status open \begin_layout Plain Layout -figure? +\align center +\begin_inset Graphics + filename images/polygons2d/polygonSignature/polygonSignature_rectangle_init.png + lyxscale 50 + width 45text% + +\end_inset + + +\begin_inset Graphics + filename images/polygons2d/polygonSignature/polygonSignature_rectangle_signature.png + lyxscale 50 + width 45text% + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +\begin_inset CommandInset label +LatexCommand label +name "fig:Polar-Signature-Polygon" + +\end_inset + +Polar signature of a polygon. + Example on a rectangle polygon. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + \end_layout \end_inset @@ -6841,13 +7053,6 @@ polygonCurvature Estimates the curvature on polygon vertices using polynomial fit. \end_layout -\begin_layout Standard -\begin_inset Newpage newpage -\end_inset - - -\end_layout - \begin_layout Section Clipping and intersections \end_layout @@ -12657,7 +12862,7 @@ Returns the distance between 3D points and 3D circle. \begin_layout Minisec transformCircle3d \begin_inset Index idx -status open +status collapsed \begin_layout Plain Layout transformCircle3d @@ -14683,7 +14888,16 @@ tri-mesh \end_inset ), or have faces with variable number of vertices. - + The term +\begin_inset Quotes eld +\end_inset + +polyhedron +\begin_inset Quotes erd +\end_inset + + is sometimes used to denote functions that expect as input a 3D mesh that + is convex and with a low number of faces. \end_layout \begin_layout Standard @@ -16659,6 +16873,15 @@ Operations on meshes \begin_layout Standard Most functions in this section transform a mesh into another mesh, or into another geometric data structure. + Some of the functions have been adapted from the GP Toolbox library +\begin_inset CommandInset citation +LatexCommand citep +key "gptoolbox" +literal "false" + +\end_inset + +. \end_layout \begin_layout Subsection @@ -17377,7 +17600,7 @@ clipMeshByPlane \end_layout \begin_layout Standard -Clip a mesh by a plane. +Clips a mesh by a plane. \end_layout \begin_layout Subsection @@ -17832,6 +18055,24 @@ Several functions allows to measure 3D intrinsic volumes, corresponding Some functions are dedicated to specific mesh types. \end_layout +\begin_layout Minisec +polyhedronCentroid +\begin_inset Index idx +status collapsed + +\begin_layout Plain Layout +polyhedronCentroid +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Computes the centroid of a 3D convex polyhedron. +\end_layout + \begin_layout Minisec meshSurfaceArea \begin_inset Index idx @@ -17878,12 +18119,12 @@ meshSurfaceArea \end_layout \begin_layout Minisec -meshFaceAreas +meshVolume \begin_inset Index idx status collapsed \begin_layout Plain Layout -meshFaceAreas +meshVolume \end_layout \end_inset @@ -17892,16 +18133,16 @@ meshFaceAreas \end_layout \begin_layout Standard -Surface area of each face of a mesh. +Volume of the space enclosed by a polygonal mesh. \end_layout \begin_layout Minisec -meshVolume +tetrahedronVolume \begin_inset Index idx status collapsed \begin_layout Plain Layout -meshVolume +tetrahedronVolume \end_layout \end_inset @@ -17910,16 +18151,17 @@ meshVolume \end_layout \begin_layout Standard -Volume of the space enclosed by a polygonal mesh. +Computes the signed volume of a tetrahedron. + \end_layout \begin_layout Minisec -meshEdgeLength +polyhedronMeanBreadth \begin_inset Index idx status collapsed \begin_layout Plain Layout -meshEdgeLength +polyhedronMeanBreadth \end_layout \end_inset @@ -17928,34 +18170,45 @@ meshEdgeLength \end_layout \begin_layout Standard -Lengths of edges of a polygonal or polyhedral mesh. +Mean breadth of a convex polyhedron. \end_layout \begin_layout Minisec -meshDihedralAngles +trimeshMeanBreadth \begin_inset Index idx status collapsed \begin_layout Plain Layout -meshDihedralAngles +trimeshMeanBreadth \end_layout \end_inset - + \end_layout \begin_layout Standard -Dihedral angle at edges of a polyhedal mesh. +Mean breadth of a triangular mesh. +\end_layout + +\begin_layout Subsection +Geometric measures for mesh elements +\end_layout + +\begin_layout Standard +Functions described here provides geometric measurements for mesh vertices, + faces, or edges. + In most cases, the index of the query elements can be specified. + Otherwise, measure is computed for all elements within the mesh. \end_layout \begin_layout Minisec -meshFacePolygons +meshFaceAreas \begin_inset Index idx status collapsed \begin_layout Plain Layout -meshFacePolygons +meshFaceAreas \end_layout \end_inset @@ -17964,34 +18217,52 @@ meshFacePolygons \end_layout \begin_layout Standard -Returns the set of polygons that constitutes a mesh. +Surface area of each face of a mesh. \end_layout \begin_layout Minisec -polyhedronCentroid +meshFaceNormals \begin_inset Index idx status collapsed \begin_layout Plain Layout -polyhedronCentroid +meshFaceNormals \end_layout \end_inset - + \end_layout \begin_layout Standard -Computes the centroid of a 3D convex polyhedron. +Computes the normal vector of faces in a 3D mesh. \end_layout \begin_layout Minisec -tetrahedronVolume +meshVertexNormals \begin_inset Index idx status collapsed \begin_layout Plain Layout -tetrahedronVolume +meshVertexNormals +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Computes the normals to a mesh vertices. +\end_layout + +\begin_layout Minisec +meshEdgeLength +\begin_inset Index idx +status collapsed + +\begin_layout Plain Layout +meshEdgeLength \end_layout \end_inset @@ -18000,16 +18271,16 @@ tetrahedronVolume \end_layout \begin_layout Standard -Signed volume of a tetrahedron. +Lengths of edges of a polygonal or polyhedral mesh. \end_layout \begin_layout Minisec -polyhedronNormalAngle +meshDihedralAngles \begin_inset Index idx status collapsed \begin_layout Plain Layout -polyhedronNormalAngle +meshDihedralAngles \end_layout \end_inset @@ -18018,16 +18289,16 @@ polyhedronNormalAngle \end_layout \begin_layout Standard -Computes the normal angle at a vertex of a 3D polyhedron. +Dihedral angle at edges of a polyhedal mesh. \end_layout \begin_layout Minisec -polyhedronMeanBreadth +meshFacePolygons \begin_inset Index idx status collapsed \begin_layout Plain Layout -polyhedronMeanBreadth +meshFacePolygons \end_layout \end_inset @@ -18036,25 +18307,32 @@ polyhedronMeanBreadth \end_layout \begin_layout Standard -Mean breadth of a convex polyhedron. +Returns the set of polygons that constitutes a mesh. \end_layout \begin_layout Minisec -trimeshMeanBreadth +polyhedronNormalAngle \begin_inset Index idx status collapsed \begin_layout Plain Layout -trimeshMeanBreadth +polyhedronNormalAngle \end_layout \end_inset + +\end_layout +\begin_layout Standard +Computes the normal angle at a vertex of a 3D polyhedron. \end_layout \begin_layout Standard -Mean breadth of a triangular mesh. +\begin_inset Newpage newpage +\end_inset + + \end_layout \begin_layout Subsection @@ -18116,6 +18394,52 @@ literal "false" . \end_layout +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Plain Layout + +\end_layout + +\begin_layout Plain Layout +\align center +\begin_inset Graphics + filename images/meshes3d/distancePointMesh/distancePointMesh_dodecahedron_view3d.png + lyxscale 50 + width 60text% + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption Standard + +\begin_layout Plain Layout +Computation of distances between points and mesh. + For each point within the horizontal slice, the closest distance to the + polyhedron (here a dodecahedron) is computed, and represented with color + code. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\end_layout + \begin_layout Standard \begin_inset Newpage newpage \end_inset diff --git a/docs/matGeom-manual/matGeom.bib b/docs/matGeom-manual/matGeom.bib index 21c28d99..00bb9064 100644 --- a/docs/matGeom-manual/matGeom.bib +++ b/docs/matGeom-manual/matGeom.bib @@ -264,4 +264,12 @@ @Misc{Eberly_1999 url = {https://www.geometrictools.com/Documentation/DistancePoint3Triangle3.pdf}, } +@Misc{gptoolbox, + author = {Alec Jacobson and others}, + note = {\url{http://github.com/alecjacobson/gptoolbox}}, + title = {{gptoolbox}: {Geometry Processing Toolbox}}, + year = {2021}, + creationdate = {2023-12-20T10:35:07}, +} + @Comment{jabref-meta: databaseType:bibtex;}