Merge branch 'GEOMETRY-63__Matt'
Closes #55.
diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java
index bd08b63..116c6a0 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java
@@ -255,24 +255,7 @@
final List<S> minusBoundaries = new ArrayList<>();
final List<S> plusBoundaries = new ArrayList<>();
- Split<? extends ConvexSubHyperplane<P>> split;
- ConvexSubHyperplane<P> minusBoundary;
- ConvexSubHyperplane<P> plusBoundary;
-
- for (final S boundary : boundaries) {
- split = boundary.split(splitter);
-
- minusBoundary = split.getMinus();
- plusBoundary = split.getPlus();
-
- if (minusBoundary != null) {
- minusBoundaries.add(subhpType.cast(minusBoundary));
- }
-
- if (plusBoundary != null) {
- plusBoundaries.add(subhpType.cast(plusBoundary));
- }
- }
+ splitBoundaries(splitter, subhpType, minusBoundaries, plusBoundaries);
minusBoundaries.add(subhpType.cast(trimmedSplitter));
plusBoundaries.add(subhpType.cast(trimmedSplitter.reverse()));
@@ -281,6 +264,38 @@
}
}
+ /** Split the boundaries of the region by the given hyperplane, adding the split parts into the
+ * corresponding lists.
+ * @param splitter splitting hyperplane
+ * @param subhpType the type used for the boundary subhyperplanes
+ * @param minusBoundaries list that will contain the portions of the boundaries on the minus side
+ * of the splitting hyperplane
+ * @param plusBoundaries list that will contain the portions of the boundaries on the plus side of
+ * the splitting hyperplane
+ */
+ private void splitBoundaries(final Hyperplane<P> splitter, final Class<S> subhpType,
+ final List<S> minusBoundaries, final List<S> plusBoundaries) {
+
+ Split<? extends ConvexSubHyperplane<P>> split;
+ ConvexSubHyperplane<P> minusBoundary;
+ ConvexSubHyperplane<P> plusBoundary;
+
+ for (final S boundary : boundaries) {
+ split = boundary.split(splitter);
+
+ minusBoundary = split.getMinus();
+ plusBoundary = split.getPlus();
+
+ if (minusBoundary != null) {
+ minusBoundaries.add(subhpType.cast(minusBoundary));
+ }
+
+ if (plusBoundary != null) {
+ plusBoundaries.add(subhpType.cast(plusBoundary));
+ }
+ }
+ }
+
/** Internal class encapsulating the logic for building convex region boundaries from collections of
* hyperplanes.
* @param <P> Point implementation type
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/BoundarySource3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/BoundarySource3D.java
index 879a22a..47dda36 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/BoundarySource3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/BoundarySource3D.java
@@ -50,6 +50,6 @@
* @return a boundary source containing the given boundaries
*/
static BoundarySource3D from(final Collection<Facet> boundaries) {
- return () -> boundaries.stream();
+ return boundaries::stream;
}
}
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/BoundarySourceLinecaster3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/BoundarySourceLinecaster3D.java
index 43a7399..89dce03 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/BoundarySourceLinecaster3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/BoundarySourceLinecaster3D.java
@@ -18,6 +18,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -65,7 +66,7 @@
private Stream<LinecastPoint3D> getIntersectionStream(final Segment3D segment) {
return boundarySrc.boundaryStream()
.map(boundary -> computeIntersection(boundary, segment))
- .filter(intersection -> intersection != null);
+ .filter(Objects::nonNull);
}
/** Compute the intersection between a boundary facet and linecast intersecting segment. Null is
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/BoundarySource2D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/BoundarySource2D.java
index a4e5ae5..561b144 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/BoundarySource2D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/BoundarySource2D.java
@@ -50,6 +50,6 @@
* @return a boundary source containing the given boundaries
*/
static BoundarySource2D from(final Collection<Segment> boundaries) {
- return () -> boundaries.stream();
+ return boundaries::stream;
}
}
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/BoundarySourceLinecaster2D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/BoundarySourceLinecaster2D.java
index bf4133d..612c6a1 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/BoundarySourceLinecaster2D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/BoundarySourceLinecaster2D.java
@@ -18,6 +18,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -65,7 +66,7 @@
private Stream<LinecastPoint2D> getIntersectionStream(final Segment segment) {
return boundarySrc.boundaryStream()
.map(boundary -> computeIntersection(boundary, segment))
- .filter(intersection -> intersection != null);
+ .filter(Objects::nonNull);
}
/** Compute the intersection between a boundary segment and linecast intersecting segment. Null is