MatGeom Versions Save

Matlab geometry toolbox for 2D/3D geometric computing

v1.2.7

5 months ago

MatGeom is a library for geometry processing / geometric computing with Matlab. It contains several hundreds of functions for the creation, the manipulation and the display of 2D and 3D geometries such as point sets, lines, polygons, 3D meshes, ellipses...

Installation

You can follow one of these procedures (from the simplest one to the most technical):

  • From Matlab's "Add-Ons" menu, choose "GetAdd-Ons....", and look for MatGeom. Then simply install or update the toolbox.
  • Download the file self-installable "matGeom-1.2.7.mltbx" from the release, and run it from Matlab.
  • Download one of the "matGeom-1.2.7.zip" or "matGeom-full-1.2.7.zip" file, and uncompress in the directiory of your choice. Then, open Matlab, set the path to the directory containing the script "setupMatGeom", and run the script. This should install the main files of the library.

New features in 1.2.7

Version 1.2.7 is mostly a consolidation and cleanup version, containing several changes in function names. Several new functions and bug fixes are included as well.

New features

  • Several new functions for mesh processing: clipMeshByPlane.m, removeDuplicateVertices.m, meshBoundaryEdges.m, removeUnreferencedVertices.m, thanks to oqilipo
  • meshes3d/intersectPlaneMesh.m now supports intersections with open meshes
  • added function distancePointCircle3d.m
  • enhance reading of 3D meshes with OBJ format

Bug fixes

  • geom2d/intersectEdges.m: fixed management of colinear edges (bug #157)
  • fixed drawing of multiple shapes with single call to drawXXX function (in both geom2d and geom3d modules)
  • fixed fillPolygon (thanks to oqilipo)
  • removed several obsolete functions to avoid function name clashes

Documentation

  • Huge effort of documentation homogeneization, especially in function headers and function names, thanks to oqilipo
  • Several updates in the user manual

Full Changelog (from v1.2.6): https://github.com/mattools/matGeom/compare/v1.2.6...v1.2.7

v1.2.6

1 year ago

MatGeom is a library for geometry processing / geometric computing with Matlab. It contains several hundreds of functions for the creation, the manipulation and the display of 2D and 3D geometries such as point sets, lines, polygons, 3D meshes, ellipses...

Installation

You can follow one of these procedures (from the simplest one to the most technical):

  • From Matlab's "Add-Ons" menu, choose "GetAdd-Ons....", and look for MatGeom. Then simply install or update the toolbox.
  • Download the file self-installable "matGeom-1.2.6.mltbx" from the release, and run it from Matlab.
  • Download one of the "matGeom-1.2.6.zip" or "matGeom-1.2.6-full.zip" file, and uncompress in the directiory of your choice. Then, open Matlab, set the path to the directory containing the script "setupMatGeom", and run the script. This should install the main files of the library.

New features in 1.2.6

  • added several functions for computations with ellipses: createEllipse.m, fitEllipse.m, ellipseCartesianCoefficients.m, distancePointEllipse.m, transformEllipse, drawEllipseAxes, and projPointOnEllipse.m
  • added functions polylineCurvature.m, polygonToPolyshape and padPolyline.m
  • added functions transformCircle3d.m
  • added function triangulatePolygonPair3d.m (more general that former triangulatePolygonPair)
  • added function readMesh_obj
  • several functions were improved for numerical stability and management of less common cases
  • a huge work was made to standardize header files and display functions (thanks to oqilipo!)
  • user manual was largely extended

Full Changelog (from v1.2.3): https://github.com/mattools/matGeom/compare/v1.2.5...v1.2.6

v1.2.5

2 years ago

MatGeom is a library for geometric computing with Matlab. It is organized in several modules for 2D geometry, 3D geometry, polygon processing, or mesh processing.

Installation

The file "matGeom-1.2.5.zip" contains the functions of the library. The file "matGeom-1.2.5-full.zip" additionnally contains demonstration files as well as a number of unit tests.

After decompressing, running the script "setupMatGeom" should properly install the whole library.

The file "matGeom-1.2.5.mltbx" can also be used as self-installable file for the toolbox.

New features in 1.2.4 & 1.2.5:

  • meshes3d: added meshCurvature function
  • meshes3d: added function meshVoronoiDiagram, to compute surface domains using face adjacency.
  • meshes3d/drawMesh: added management of more input arguments
  • meshes3d/intersetLineMesh3d: do not normalize normal vectors before testing they are degenerated
  • geom3d: new function clipPlane (based on drawPlane)
  • polygons2d/intersectLinePolygon: rewrite for making the function more robust to numerical accuracy
  • geom2d/circleToPolygon: add management of angular shift
  • user manual was largely extended

Deprecations:

  • removed the "polynomialCurve" module

Full Changelog (from v1.2.3): https://github.com/mattools/matGeom/compare/v1.2.3...v1.2.5

v1.2.4

2 years ago

MatGeom is a library for geometric computing with Matlab. It is organized is several modules for 2D geometry, 3D geometry, polygon processing, or mesh processing.

Installation

The file "matGeom-X.Y.Z.zip" contains the functions of the library. The file "matGeom-X.Y.Z-full.zip" additionnally contains demonstration files as well as a number of unit tests.

After decompressing, running the script "setupMatGeom" should properly install the whole library.

New features in 1.2.4:

  • meshes3d: added meshCurvature function
  • meshes3d: added function meshVoronoiDiagram, to compute surface domains using face adjacency.
  • meshes3d/drawMesh: added management of more input arguments
  • geom3d: new function clipPlane (based on drawPlane)

Full Changelog: https://github.com/mattools/matGeom/compare/v1.2.3...v1.2.4

v1.2.3

2 years ago

MatGeom is a library for geometric computing with Matlab. It is organized is several modules for 2D geometry, 3D geometry, polygon processing, or mesh processing.

Installation The file "matGeom-X.Y.Z.zip" contains the functions of the library. The file "matGeom-X.Y.Z-full.zip" additionnally contains demonstration files as well as a number of unit tests.

After decompressing, running the script "setupMatGeom" should properly install the whole library.

This release added new functions for the management of lines and of meshes.

Added

  • (geom3d) added createRay3d
  • (geom3d) added "projPointOnCircle3d" (thanks to oqilipo)
  • (geom3D) added "projPointOnCylinder", "fitEllipse3D", "geodesicCylinder" (thanks to oqilipo)
  • (geom3d) added "isPointInEllipsoid", "isPointOnEdge3d", "intersectEdgePolygon3d"
  • (geom3d) added createRotationAboutPoint3d (thanks to oqilipo)
  • (meshes3d) added readMesh and writeMesh functions, and updated I/O functions
  • (meshes3d) added "meshSilhouette" (thanks to oqilipo)
  • (meshes3D) added intersectEdgeMesh3d.m
  • (meshes3d) added sample PLY file

Updated

  • (geom3d) drawLabels3d: improved management of input arguments
  • (geom3d) drawPlane3d: added support for drawing multiple planes at once
  • (meshes3D) vectorised version of "intersectLineMesh3d" (thanks to sven holcombe)

Others

  • removed several obsolete files, updated demos

v1.2.2

4 years ago

MatGeom is a library for geometric computing with Matlab. It is organized is several modules for 2D geometry, 3D geometry, polygon processing, or mesh processing.

Installation The "matGeom-X.Y.Z.zip" file contains the functions of the library. The "matGeom-X.Y.Z-full.zip" additionnally contains demonstration files and unit test framework.

After decompressing, the script "setupMatGeom" should properly install the whole library.

Main changes are improvements in drawing functions, and in the management of Euler angles.

Added

  • (geom2d) added function principalAxesTransform
  • (polygons2d) added polygnSkeleton function
  • (polygons2d) added clipPolyline function
  • (graphs2d) added adjacencyListToEdges function
  • (geom3d) added function normalizeLine3d
  • (geom3d) added function fitSphere
  • (geom3d) added functions drawDome and drawCapsule
  • (geom3d) added function drawAngleBetweenVectors3d
  • (geom3d) added drawRay3d and clipRay3d
  • (meshes3d) added averageMesh function, to compute an average mesh from several mesh instances
  • (meshes3d) added meshComplement
  • (meshes3d) added function fillMeshFaces

Changed

  • (geom2d) fitAffineTransform2d: changed convention for source and target point sets
  • (polygons2d) polygonSubcurve and polylineSubcurve now also return indices of selected vertices
  • (geom3d) improvements in management of Euler Angles in rotation3dToEulerAngles and eulerAnglesToRotation3d
  • (geom3d) drawCylinder can now handle multiple cylinders as numeric arrays
  • (geom3d) several updates to drawing functions
  • (geom3d) make some vector operations more generic about dimension
  • (geom3d) fitAffineTransform3d: changed convention for source and target point sets
  • (meshes3d) reading of OFF files is now faster when faces have homogeneous number of vertices
  • (meshes3d) readMesh_ply.m: replaces error by warning

Regression

  • (geom2d) removed functions rad2deg and deg2rad, as they can be replced by Matlab native functions

v1.2.1

4 years ago

MatGeom is a library for geometric computing with Matlab. It is organized is several modules for 2D geometry, 3D geometry, polygon processing, or mesh processing.

Installation

The "matGeom-X.Y.Z.zip" file contains the functions of the library. The "matGeom-X.Y.Z-full.zip" additionnally contains demonstration files and unit test framework.

After decompressing, the script "setupMatGeom" should properly install the whole library.

New Features

This releases introduces new functions for the processing of meshes (repairing and simplification), as well as many various changes. A summary is provided into the Changelog.md file.

Added

  • (meshes3d) added meshFaceAreas.m
  • (meshes3d) added removeDuplicateFaces.m, removeMeshEars.m, ensureManifoldMesh.m
  • (meshes3d) added meshVertexClustering.m
  • (meshes3d) added functions for detection of boundary edges and vertices
  • (meshes3d) added createStellatedMesh.m
  • (geom3d) added fitAffineTransform3d and registerPoints3dAffine.m
  • (geom3d/geom2d) added principalAxes function (working for both 2D/3D points)
  • (geom3d) added function isTransform3d (thanks to oqilipo)
  • (geom3d) added function drawPlatform (thanks to oqilipo)
  • (geom3d) added function drawLabels3d
  • (geom3d) added functions createEdge3d, edgeLength3d, linToEdge3d
  • (polygons2d) added polygonVertices
  • (geom2d) added function lineToEdge
  • (geom2d) updated comments in polarPoint

Changed

  • (geom3d) updated return type of drawing functions
  • (geom3d) renamed inertiaEllipsoid into equivalentEllipsoid
  • (polygons2d) renamed polygonInertiaEllipse into polygonEquivalentEllipse
  • (geom2d) nndist now uses delaunay instead of delaunayTriangulation
  • (geom2d) renamed inertiaEllipse into equivalentEllipse
  • (demos) reorganized the hierarchy of demo files
  • (all) several updates in documentation

Fixed

  • (geom3d) bug in orientedBox3d
  • (geom2d) fixed bug in polarPoint (thanks to Chris Gorman)

Other bug fixes and comments by JuanPi Carbajal, oqilipo, Tao Zhang, "the neuromechanist", Robin Georg, Chris Gorman.

v1.2

6 years ago

MatGeom 1.2.0 - 2018-06-07

MatGeom is a library for geometric computing with Matlab. It is organized is several modules.

Installation: the script "setupMatGeom" should properly install the whole library.

Added

  • (meshes3d) added several functions fore reading/writing 3D meshes in PLY and OFF formats
  • (meshes3d) added splitMesh function to split a mesh into its connected components (thanks to oqilipo)
  • (meshes3d) added concatenateMesh function (thanks to oqilipo)
  • (meshes3d) added triangulatePolygonPair.m and update triangulateCurvePair.m
  • (meshes3d) added distancePointMesh function
  • (meshes3d) added curveToMesh
  • (meshes3d) added boxToMesh (thanks to oqilipo)
  • (meshes3d) added isPointInMesh
  • (geom3d) added fitCircle3d and fitEllipse3d (thanks to oqilipo)
  • (geom3d) added intersectThreePlanes (thanks to Roozbeh)
  • (geom3d) added distPointTriangle3d
  • (geom3d) added clipEdge3d
  • (geom3d) added createRotationVector3d and createRotationVectorPoint3d (thanks to oqilipo)
  • (geom3d) added projLineOnPlane function (thanks to oqilipo)
  • (geom3d) added crossProduct3d
  • (geom3d) added cylinderSurfaceArea
  • (geom3d) added edgeToLine3d conversion function
  • (polygons2d) add polygonInertiaEllipse.m and polygonSecondAreaMoments.m
  • (polygons2d) added polygonOuterNormal and polygonCurvature functions
  • (polygons2d) added resamplePolygonByLength.m and resamplePolylineByLength.m
  • (polygons2d) added function boxToPolygon
  • (geom3d) added some files from geom2d in private directories to prevent missing file errors
  • (graphs) added clipMesh2dPolygon.m

Changed

  • (meshes3d) much faster centroid calculation for the 3D triangle mesh case
  • (meshes3d) added a 'trimMesh' option to clipMeshVertices
  • (meshes3d) unification of the parsing of some mesh functions
  • (meshes3d) checkMeshAdjacentFaces.m: compute edge array if it is not specified
  • (meshes3d) rename several functions: meshNormal -> meshVertexNormals, faceNormal -> meshFaceNormals...
  • (geom3d) createScaling3d can now specifiy center of scaling
  • (geom3d) added axes handle input for drawPoint3d.m
  • (geom3d) distanceLines3d.m: added psb to compute coordinates of closest points on lines
  • (geom2d) rewrite createBasisTransform3d.m
  • (geom2d) improved accuracy of isParallel and isPerpendicular
  • (geom2d) createLine can now create a line based on angle and distance to origin (thanks to Roozbeh)
  • (geom2d) circleToPolygon.m and ellipseToPolygon.m now returns polygons with distinct end vertices
  • (geom2d) updates in drawPoints (thanks to JuanPi)
  • (geom2d) circumCenter now supports multiple points as input
  • (geom2d) rewrite createBasisTransform.m
  • (polygons2d) improved precision in intersectEdgePolygon
  • (polygons2d) the intersectPolylines.m function does not use the private function "interX" anymore
  • (graphs) replaced drawGraphFaces.m by fillGraphFaces.m and update it
  • (graphs) updates centroidalVoronoi2d
  • several updates in function headers
  • removed some deprecated files

Fixed

  • (geom2d) fixed dependency to deprecated functions in drawShape
  • many small bugs fixed...

v1.0

8 years ago

First release of the MatGeom library on GitHub. MatGeom is a library for geometric computing with Matlab. It is organized is several modules. The script "setupMatGeom" should properly install the whole library.