From 4da0a023aa2523077518ec9a1d7b3f3932b6b26a Mon Sep 17 00:00:00 2001 From: Martin Davis Date: Wed, 26 Feb 2025 10:57:06 -0800 Subject: [PATCH] Add DelaunayTriangulationBuilder Javadoc and make internal functions non-public --- .../DelaunayTriangulationBuilder.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/modules/core/src/main/java/org/locationtech/jts/triangulate/DelaunayTriangulationBuilder.java b/modules/core/src/main/java/org/locationtech/jts/triangulate/DelaunayTriangulationBuilder.java index cf1b00c610..d1a5caf811 100644 --- a/modules/core/src/main/java/org/locationtech/jts/triangulate/DelaunayTriangulationBuilder.java +++ b/modules/core/src/main/java/org/locationtech/jts/triangulate/DelaunayTriangulationBuilder.java @@ -42,10 +42,13 @@ public class DelaunayTriangulationBuilder { /** * Extracts the unique {@link Coordinate}s from the given {@link Geometry}. + * Has the side effect of sorting the coordinates in XY order. + * This significantly improves the robustness of Delaunay triangulation construction. + * * @param geom the geometry to extract from - * @return a List of the unique Coordinates + * @return a sorted list of the unique Coordinates */ - public static CoordinateList extractUniqueCoordinates(Geometry geom) + static CoordinateList extractUniqueCoordinates(Geometry geom) { if (geom == null) return new CoordinateList(); @@ -54,7 +57,15 @@ public static CoordinateList extractUniqueCoordinates(Geometry geom) return unique(coords); } - public static CoordinateList unique(Coordinate[] coords) + /** + * Copies a list of coordinates and ensures they are unique. + * Has the side effect of sorting the coordinates in XY order. + * This significantly improves the robustness of Delaunay triangulation construction. + * + * @param coords a list of coordinates + * @return a sorted list of unique coordinates + */ + static CoordinateList unique(Coordinate[] coords) { Coordinate[] coordsCopy = CoordinateArrays.copyDeep(coords); Arrays.sort(coordsCopy);