gitlab sfcgal/SFCGAL v2.3.0

4 hours ago
### New Features
- !540: feat(IsClosed): Add IsClosed function (Loïc Bartoletti)
- !550: Introduce Primitive base class and use it for Cylinder and Sphere (Jean Felder)
- !535: Add Torus to the available primitive 3D (Jacky Volpes)
- !537: Add Box and Cube to the available primitive 3D (Jacky Volpes)
- !536: Add Cone and Frustum to the available primitive 3D (Jacky Volpes)
- !565: feat(capi): Add support for primitive polyhedral surface export (Jean Felder)
- !580: Add NURBSCurve (Loïc Bartoletti)
- !513: Add sfcgalop (Loïc Bartoletti)
- !572: add new Primitive functions to capi (Benoit D.-M.)
- !534: feat(PolygonRepair): Add algorithm Polygon Repair (Loïc Bartoletti)
- !617: To surface mesh (Loïc Bartoletti)
- !616: feat(OBJ): Add reader support (Loïc Bartoletti)
- !620: feat(straightSkeleton): add project_medial_axis (Loïc Bartoletti)
- !627: feat(sfcgalop): Add bool support (Loïc Bartoletti)
- !371: fix(wkb): add support for Solid with WKB code 25 (Loïc Bartoletti)
- !641: feat(capi): Add an api call to set the exterior ring of a polygon (Jean Felder)
- !639: Fix LineString::Closes and expose in the C API (Jean Felder)
- !646: feat(primitive): Implement clone method (Jean Felder)
- !649: feat(sfcgalop): Add delaunay triangulation + CDT (Loïc Bartoletti)
- !652: Add a topological edition to insert points from another geometry (Loïc Bartoletti)
- !654: feat(version): Add SFCGAL_MAKE_VERSION and SFCGAL_VERSION_NUM (Jean Felder)
- !657: Add geojson support (Loïc Bartoletti)
- !664: Add centroid_3d to sfcgalop (Raphael Delhome)
- !666: feat(capi): add OBJ reader (Loïc Bartoletti)
- !661: Add angles on extrude skeleton (Loïc Bartoletti)
- !681: Add unique_ptr constructor for Solid and Polygon (Jean Felder)
- !673: New roof generation (Loïc Bartoletti)
- !618: feat(algorithm): Implement surface mesh simplification (Loïc Bartoletti)
- !685: Introduce split by a plane algorithm (Jean Felder)
- !715: feat(src/TriangulatedSurface.h): add a numEdges method for TriangulatedSurface... (Raphael Delhome)
- !730: Add an algorithm to convert a surface mesh to a polyhedralsurface which preserves the topology (Jean Felder)
- !746: feat(capi): Add a method to retrieve a primitive typeId (Jean Felder)
- !744: Add support for transform in primitives (Jean Felder)
- !748: Add support for chamfer/fillet (Loïc Bartoletti, Jean Felder)
- !751: feat(src/io/geojson.cpp): parse MultiSolid (Raphael Delhome)

### Improvements
- !541: chore(Volume): Rewrite Volume functions using CGAL method (Loïc Bartoletti)
- !554: Primitive: Add a logic to validate parameters compatible with c api (Jean Felder)
- !557: refactor(sfcgal): Mark obsolete sfcgal_set_geometry_validation as deprecated (Jean Felder)
- !595: fix(selfIintersects): improve algorithm by avoiding repeated GeometrySet creation (Benoit D.-M.)
- !608: Make Geometry API memory safe (Jean Felder)
- !648: Use shoelace formula for 3D area (Jean Felder)
- !659: feat(sfcgalop): improve sfcgalop (Loïc Bartoletti)
- !670: alpha-shapes can handle multipolygon as output (Sebastien Loriot)
- !672: intersection improvements (Jean Felder)
- !683: explicitely deprecate deprecated functions (Jean Felder)
- !684: TIN/PolyhedralSurface : fix patchs typo (Jean Felder)
- !722: chore(minkowskiSum3D): Handle Point special case (Loïc Bartoletti)
- !723: perf(polygonRepair): disable fixOrientation (Loïc Bartoletti)
- !734: Fix Tesselate typo: use tessellate instead (Jean Felder)
- !741: Add macros to easily compare CGAL Versions (Jean Felder)
- !761: refactor(capi): Improve matrix comment in sfcgal_geometry_transform (Jean Felder)

### Bug Fixes
- !471: Orientation: fix PostGIS issue 3651 using CGAL orientation directly (Loïc Bartoletti)
- !576: Fix/capi poly cube (Benoit D.-M.)
- !577: fix: improve geometry comparison (Benoit D.-M.)
- !594: fix(simplification): use fully qualified namespace for algorithm::simplify call (Loïc Bartoletti)
- !599: Misc capi fixes for windows compilation (Jean Felder)
- !604: fix(sfcgalop): disable alphashapes on msvc (Loïc Bartoletti)
- !605: fix(sfcgalop/getopt_win): Remove unused variable optreset (Jean Felder)
- !619: Fix polygon repair (Loïc Bartoletti)
- !625: fix(equality): fix signed/unsigned int, missing SFCGAL_API and copy constructor (Benoit D.-M.)
- !636: fix(StraightSkeleton): remove useless skeleton variable in findEdgeMidpointProjection (Loïc Bartoletti)
- !638: fix(capi): Use correct type_id for Solid and MultiSolid (Jean Felder)
- !642: Fix/force order points with empty (Loïc Bartoletti)
- !644: Primitives : Fix copy operator (Benoit D.-M.)
- !645: Fix empty second round (Loïc Bartoletti)
- !650: Fix sphere buffer3d minkowskisum3d (Loïc Bartoletti)
- !662: Design a specific function for computing centroids with MultiPoint (Raphael Delhome)
- !663: Centroid (2D) should fail on vertical triangles (Raphael Delhome)
- !669: Fix offset for negative value (Sebastien Loriot)
- !675: fix(capi): Use double values for sfcgal_geometry_transform parameters (Jean Felder)
- !676: fix wktwriter for zero precision case (Jean Felder)
- !691: fix(straightskeletonwithangles): angles were given in the wrong parameter in the c api (Jacky Volpes)
- !702: fix(geometryset): Take into account existing output on recompose (Jean Felder)
- !704: fix(sfcgalop): Do not add D suffix to dimension (Jean Felder)
- !709: fix(sphere): Remove unused parameter direction (Jean Felder)
- !710: fix(cylinder): Fix cylinder normal orientation (Jean Felder)
- !712: fix(algorithm/offset): Fix phs and tin cases (Jean Felder)
- !714: fix(surfaceSimplification.cpp): the edge count predicate was misinterpreted, reverse it (Raphael Delhome)
- !716: Fix/cerr exception (Benoit D.-M.)
- !719: fix(Distance3D): Use intersects 3D instead of instersects 2D (Loïc Bartoletti)
- !721: fix(approximateMedialAxis): add empty check (Loïc Bartoletti)

### Build / Dependencies
- !531: chore(brew): Update SFCGAL version (Jean Felder)
- !530: chore(ci): Also test CGAL version 6.1-beta1 (Jean Felder)
- !532: chore(ci): Remove outdated fedora 40 from testing (Jean Felder)
- !539: chore(build): Fix compilation with boost 1.89 (Jean Felder)
- !544: chore(docker): Update debian docker image for debian 13 (Jean Felder)
- !552: chore(ci/commitizen): Use default python docker image (Jean Felder)
- !555: chore(ci): Use a conservative version to build debian docker image (Jean Felder)
- !560: Clang tidy test (Loïc Bartoletti)
- !562: ci(macos): cmake is already installed in latest image (Loïc Bartoletti)
- !569: Make doxygen-check script available locally (Benoit D.-M.)
- !571: chore(pre-commit): Fix deprecation push warning (Jean Felder)
- !573: CI : test CGAL latest versions (Jean Felder)
- !579: fix(script): Fix bash shebang in doxygen-check.sh (Loïc Bartoletti)
- !581: Switch to a fedora image to have a newer doxygen version and fix new found doxygen warnings (Jean Felder)
- !589: build(SFCGALConfig): Set cmake policies to avoid warnings (Jean Felder)
- !590: ci(vcpkg): Update vcpkg baseline to fix gmp build on macos (Jean Felder)
- !591: ci(doxygen): Ensure to always add the corresponding header files (Jean Felder)
- !593: ci: Update CGAL latest version to 6.1 (Jean Felder)
- !597: chore: migrate pre-commit config for doxygen (Benoit D.-M.)
- !601: fix(docker): Build sfcgalop in docker images (Jean Felder)
- !602: chore(ci): Also test fedora 43 (Jean Felder)
- !603: chore(github/ci): Add missing nlohmann-json dependency (Jean Felder)
- !606: chore(docker/windows): Switch to x64-windows-release triplet (Jean Felder)
- !611: Fix bench compilation by adding missing libraries (Jean Felder)
- !614: Replace boost chrono and timer calls by <chrono> from the standard library (Jean Felder)
- !621: Fix Cirrus CI (Loïc Bartoletti)
- !622: ci(BSD): Bump CGAL, FreeBSD, OpenBSD versions (Loïc Bartoletti)
- !623: chore: Update vcpkg baseline to have boost 1.89 (Jean Felder)
- !628: docs: add missing json dependency in installation.md (Augustin Trancart)
- !631: Enable tests on macos ci (Jean Felder)
- !632: ci(github): Rename ci action to bsd (Jean Felder)
- !633: CI-integration update information (Jean Felder)
- !634: misc cmake warning fixes (Jean Felder)
- !647: fix(examples): Add missing cgal target link library (Jean Felder)
- !651: Remove benchmarks (Loïc Bartoletti)
- !655: ci(bsd): remove cgal system and use latest version (Loïc Bartoletti)
- !656: ci(github): move repo to SFCGAL/SFCGAL (Loïc Bartoletti)
- !671: ci: update CGAL version to 6.1.1 (Jean Felder)
- !678: Fix/sonarcloud conf (Benoit D.-M.)
- !680: ci(debian): Install certificates to be able to download CGAL (Jean Felder)
- !697: chore: improve before_install script for failure (Jean Felder)
- !699: ci job misc improvements (Jean Felder)
- !707: chore(ci): Add lint prefix to all lint jobs (Jean Felder)
- !717: chore(ci): Remove fedora 41 from testing and add fedora 44 (Jean Felder)
- !724: Build SFCGAL with EIGEN support in the Docker image (Raphael Delhome)
- !729: Apply clang-format to sfcgalop (Jean Felder)
- !731: ci(doxygen): Update doxygen image to fedora 44 (Jean Felder)
- !732: ci(sonar): run sonar jobs only on source code changes (Jean Felder)
- !735: ci(debian): Drop unused boost-system dependency (Jean Felder)
- !736: CGAL 6.2 compatibility (Jean Felder)
- !737: ci: Add UBSAN/ASAN (Loïc Bartoletti)
- !739: update thread-safety ci to fedora 44 (Jean Felder)
- !755: chore(vcpkg): Update baseline (Jean Felder)
- !759: ci: Update CGAL latest version to 6.2 (Jean Felder, Loïc Bartoletti)
- !760: minor changes for sfcgalop (Loïc Bartoletti)

### Code Quality / Refactoring
- !538: chore(clang-tidy): Disable readability-magic-numbers warnings (Jean Felder)
- !542: doxygen + clang-tidy polyhedralsurface small cleanups (Jean Felder)
- !543: small Clang tidy cleanup (Jean Felder)
- !545: chore(clang-tidy): Ignore modernize-use-using rule in C API (Jean Felder)
- !546: sphere class - misc cleanups (Jean Felder)
- !547: cylinder - misc cleanups (Jean Felder)
- !548: refactor(cylinder): Use unsigned int for num_radial (Jean Felder)
- !556: refactor(test): Rename ApproximateMedialAxis test file (Jean Felder)
- !568: refactor(constraintdelaunaytriangulation): Directly use std::optional (Jean Felder)
- !570: refactor(tests): Replace boost::filesystem by std::filesystem (Jean Felder)
- !575: chore: update .clang-tidy (Benoit D.-M.)
- !610: fix(triangulatedsurface): Remove unused K template param in toPolyhedron (Jean Felder)
- !613: Fix doxygen clang tidy (Loïc Bartoletti)
- !626: chore(OBJ): fix warnings about redundant move in return statement (Loïc Bartoletti)
- !637: Modernize cmake and fix warnings (Loïc Bartoletti)
- !667: chore(copyright): Welcome to 2026 (Loïc Bartoletti)
- !677: refactor(triangulatePolygon): Fix clang parameter name warning (Jean Felder)
- !679: refactor(tests): drop new usage and use unique_ptr everywhere (Jean Felder)
- !686: Do not use raw pointer in geometry classes (Jean Felder)
- !687: io classes: do not use raw pointer (Jean Felder)
- !689: generator: stop using raw pointer (Jean Felder)
- !690: refactor(extrude): Do not use raw pointer (Jean Felder)
- !692: refactor(geometryset): do not use raw pointer (Jean Felder)
- !693: building example: do not use raw pointer (Jean Felder)
- !694: refactor(convexhull): Do not use raw pointer (Jean Felder)
- !695: refactor(straightskeleton): Do not use raw pointer (Jean Felder)
- !696: refactor(collect): Do not use raw pointer (Jean Felder)
- !700: refactor(sfcgalop): simplify make_solid (Jean Felder)
- !701: clean up algorithm : remove raw pointer usage (Jean Felder)
- !706: chore(capi): Use snake_case everywhere and add it to clang-tidy config (Jean Felder)
- !708: refactor(primitive): Organize primitive enum by alphabetical order (Jean Felder)
- !711: Misc capi clang-tidy cleanups (Jean Felder)
- !720: chore(ublas): fix some warnings (Loïc Bartoletti)
- !726: misc split3d cleanups (Jean Felder)
- !728: sfcgalop: reorganize operations by alphabetical order (Jean Felder)
- !740: refactor(sfcgalop): Rename surfacesimplification to surface_simplification (Jean Felder)
- !743: refactor(sphere): Drop unused get_orthogonal_vector function (Jean Felder)
- !745: refactor(sfcgalop): Use epsilon from sfcgal numeric (Jean Felder)
- !749: refactor(box): Center around origin (Jean Felder)
- !753: chore(centroid): Drop extra comma in weightedCentroid (Jean Felder)
- !754: chore(meshtopolyhedralsurface): Drop extra comma in createRing (Jean Felder)
- !756: ci: remove cirrus-ci (Loïc Bartoletti)
- !762: ci(debian): Improve cgal download timeout (Jean Felder)
- !764: refactor(sfcgalop): Rename set operation to boolean operation (Jean Felder)

### Tests
- !549: [capi- triangle] improve documentation and add a unit test (Jean Felder)
- !553: fix(test): Fix capi triangle test (Jean Felder)
- !558: tests: Checks that Primitive::generatePolyhedralSurface output are valid (Jean Felder)
- !640: tests(AreaTest): Improve area3D test coverage (Jean Felder)
- !658: test(sphere): remove covers3D check to speedup test (Loïc Bartoletti)
- !665: test(test/unit/SFCGAL/CentroidTest.cpp): 3D/4D Multipoints (Raphael Delhome)
- !682: intersection test: use unique_ptr instead of raw pointer (Jean Felder)
- !688: tests: some more release /new replaced by unique_ptr/move (Jean Felder)
- !698: refactor(surfacesimplificationtest): Fix deprecation warning messages (Jean Felder)
- !705: chore(tests): Rename simplification file test name (Jean Felder)
- !713: test(OBJTest.cpp): new bunch of unit tests for OBJ reading (Raphael Delhome)
- !718: fix(tests): fix split3D unit test for CGAL 5 and CGAL 6.0 (Jean Felder)
- !725: Fix some securities problem (Loïc Bartoletti)
- !738: fix(areaTest): Fix areaTest compilation (Jean Felder)
- !742: fix(test): Sphere does not have num_{vertical, horizontal} anymore (Jean Felder)

### Documentation
- !533: chore(README): Improve display of repology image (Jean Felder)
- !551: chore(doc): Fix misc issues in doxygen CAPI (Jean Felder)
- !563: chore(capi): Fix doxygen error for sfcgal_io_write_binary_prepared (Jean Felder)
- !564: chore(doc/capi): Fix internal references (Jean Felder)
- !566: doc(capi): Improve STL and OBJ documentation (Jean Felder)
- !567: CAPI And Primitive documentation cleanups (Benoit D.-M.)
- !574: docs(capi): improve cross referenced object documentation (Jean Felder)
- !578: doc(sfcgal): Improve reference on CAPI sfcgal_geometry_buffer3d doc (Jean Felder)
- !583: Fix doxygen warnings detail/io (Jean Felder)
- !584: Fix doxygen warnings in detail/algorithms (Jean Felder)
- !585: Fix doxygen warnings in detail/graph (Jean Felder)
- !586: docs(detail/GeometrySet): Fix doxygen warnings (Jean Felder)
- !587: Fix doxygen errors on src/detail (Jean Felder)
- !588: Fix algorithm doxygen errors (Jean Felder)
- !592: Simplify isValid documentation (Jean Felder)
- !596: doc(building): Fix documentation (Jean Felder)
- !600: docs: some low hanging fruits (Loïc Bartoletti)
- !607: docs(README.md): improve readability and apply markdownlint recommendations (Sébastien Guimmara)
- !609: chore(geom): Add full doxygen to operator== (Jean Felder)
- !612: docs(template): Avoid classes infinite recursion (Jean Felder)
- !630: doc(README.md): add a DOI number for current version (Raphael Delhome)
- !653: fix(sponsors): add sfcgal.org mail instead of oslandia one (Loïc Bartoletti)
- !703: docs(capi): Explain the difference between straight_skeleton and polygon_straight_skeleton (Jean Felder)
- !733: docs(capi): Fix and improve rotate documentation (Jean Felder)
- !747: fix(capi): Fix typo in sfcgal_geometry_is_equals documentation (Jean Felder)
- !750: docs(capi): Improve straight_skeleton documentation (Jean Felder)
- !757: readme: badges fixes (Jean Felder)

Don't miss a new SFCGAL release

NewReleases is sending notifications on new releases.