This is an automated email from the ASF dual-hosted git repository. erans pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-geometry.git
commit 67ce2150e70245ce26cf2c7fab8a3455d4bcbafd Author: Matt Juntunen <matt.juntu...@hotmail.com> AuthorDate: Fri Dec 13 01:06:23 2019 -0500 GEOMETRY-63: small changes based on sonarcloud report: using method references instead of lambdas and moving internal methods to the classes that use them --- .../partitioning/bsp/AbstractRegionBSPTree.java | 10 +-- .../geometry/euclidean/oned/RegionBSPTree1D.java | 83 ++++++++++------------ .../geometry/euclidean/threed/RegionBSPTree3D.java | 36 ++++------ .../geometry/euclidean/twod/RegionBSPTree2D.java | 36 ++++------ .../commons/geometry/spherical/oned/Point1S.java | 3 +- .../geometry/spherical/twod/RegionBSPTree2S.java | 36 ++++------ .../spherical/oned/RegionBSPTree1STest.java | 1 - .../twod/AbstractGreatArcPathConnectorTest.java | 2 - 8 files changed, 84 insertions(+), 123 deletions(-) diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractRegionBSPTree.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractRegionBSPTree.java index 89b5569..19faf35 100644 --- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractRegionBSPTree.java +++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractRegionBSPTree.java @@ -157,13 +157,9 @@ public abstract class AbstractRegionBSPTree< protected <C extends ConvexSubHyperplane<P>> Iterable<C> createBoundaryIterable( final Function<ConvexSubHyperplane<P>, C> typeConverter) { - return new Iterable<C>() { - - @Override - public Iterator<C> iterator() { - final NodeIterator<P, N> nodeIterator = new NodeIterator<>(getRoot()); - return new RegionBoundaryIterator<>(nodeIterator, typeConverter); - } + return () -> { + final NodeIterator<P, N> nodeIterator = new NodeIterator<>(getRoot()); + return new RegionBoundaryIterator<>(nodeIterator, typeConverter); }; } diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/RegionBSPTree1D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/RegionBSPTree1D.java index 346680a..38c8fef 100644 --- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/RegionBSPTree1D.java +++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/oned/RegionBSPTree1D.java @@ -241,55 +241,11 @@ public final class RegionBSPTree1D extends AbstractRegionBSPTree<Vector1D, Regio private void visitInsideIntervals(final BiConsumer<OrientedPoint, OrientedPoint> visitor) { for (RegionNode1D node : this) { if (node.isInside()) { - visitNodeInterval(node, visitor); + node.visitNodeInterval(visitor); } } } - /** Determine the min/max boundaries for the convex region represented by the given node and pass - * the values to the visitor function. - * @param node the node to compute the interval for - * @param visitor the object that will receive the min and max boundaries for the node's - * convex region - */ - private void visitNodeInterval(final RegionNode1D node, final BiConsumer<OrientedPoint, OrientedPoint> visitor) { - OrientedPoint min = null; - OrientedPoint max = null; - - OrientedPoint pt; - RegionNode1D child = node; - RegionNode1D parent; - - while ((min == null || max == null) && (parent = child.getParent()) != null) { - pt = (OrientedPoint) parent.getCutHyperplane(); - - if ((pt.isPositiveFacing() && child.isMinus()) || - (!pt.isPositiveFacing() && child.isPlus())) { - - if (max == null) { - max = pt; - } - } else if (min == null) { - min = pt; - } - - child = parent; - } - - visitor.accept(min, max); - } - - /** Compute the region represented by the given node. - * @param node the node to compute the region for - * @return the region represented by the given node - */ - private Interval computeNodeRegion(final RegionNode1D node) { - final NodeRegionVisitor visitor = new NodeRegionVisitor(); - visitNodeInterval(node, visitor); - - return visitor.getInterval(); - } - /** {@inheritDoc} */ @Override protected RegionNode1D createNode() { @@ -403,7 +359,42 @@ public final class RegionBSPTree1D extends AbstractRegionBSPTree<Vector1D, Regio * @return the region represented by this node */ public Interval getNodeRegion() { - return ((RegionBSPTree1D) getTree()).computeNodeRegion(this); + final NodeRegionVisitor visitor = new NodeRegionVisitor(); + visitNodeInterval(visitor); + + return visitor.getInterval(); + } + + /** Determine the min/max boundaries for the convex region represented by this node and pass + * the values to the visitor function. + * @param visitor the object that will receive the min and max boundaries for the node's + * convex region + */ + private void visitNodeInterval(final BiConsumer<OrientedPoint, OrientedPoint> visitor) { + OrientedPoint min = null; + OrientedPoint max = null; + + OrientedPoint pt; + RegionNode1D child = this; + RegionNode1D parent; + + while ((min == null || max == null) && (parent = child.getParent()) != null) { + pt = (OrientedPoint) parent.getCutHyperplane(); + + if ((pt.isPositiveFacing() && child.isMinus()) || + (!pt.isPositiveFacing() && child.isPlus())) { + + if (max == null) { + max = pt; + } + } else if (min == null) { + min = pt; + } + + child = parent; + } + + visitor.accept(min, max); } /** {@inheritDoc} */ diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3D.java index a37be39..081d396 100644 --- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3D.java +++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3D.java @@ -159,27 +159,6 @@ public final class RegionBSPTree3D extends AbstractRegionBSPTree<Vector3D, Regio return visitor.getRegionSizeProperties(); } - /** Compute the region represented by the given node. - * @param node the node to compute the region for - * @return the region represented by the given node - */ - private ConvexVolume computeNodeRegion(final RegionNode3D node) { - ConvexVolume volume = ConvexVolume.full(); - - RegionNode3D child = node; - RegionNode3D parent; - - while ((parent = child.getParent()) != null) { - Split<ConvexVolume> split = volume.split(parent.getCutHyperplane()); - - volume = child.isMinus() ? split.getMinus() : split.getPlus(); - - child = parent; - } - - return volume; - } - /** {@inheritDoc} */ @Override protected RegionNode3D createNode() { @@ -236,7 +215,20 @@ public final class RegionBSPTree3D extends AbstractRegionBSPTree<Vector3D, Regio * @return the region represented by this node */ public ConvexVolume getNodeRegion() { - return ((RegionBSPTree3D) getTree()).computeNodeRegion(this); + ConvexVolume volume = ConvexVolume.full(); + + RegionNode3D child = this; + RegionNode3D parent; + + while ((parent = child.getParent()) != null) { + Split<ConvexVolume> split = volume.split(parent.getCutHyperplane()); + + volume = child.isMinus() ? split.getMinus() : split.getPlus(); + + child = parent; + } + + return volume; } /** {@inheritDoc} */ diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/RegionBSPTree2D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/RegionBSPTree2D.java index 29e1a76..25812ed 100644 --- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/RegionBSPTree2D.java +++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/RegionBSPTree2D.java @@ -216,27 +216,6 @@ public final class RegionBSPTree2D extends AbstractRegionBSPTree<Vector2D, Regio return new RegionSizeProperties<>(size, barycenter); } - /** Compute the region represented by the given node. - * @param node the node to compute the region for - * @return the region represented by the given node - */ - private ConvexArea computeNodeRegion(final RegionNode2D node) { - ConvexArea area = ConvexArea.full(); - - RegionNode2D child = node; - RegionNode2D parent; - - while ((parent = child.getParent()) != null) { - Split<ConvexArea> split = area.split(parent.getCutHyperplane()); - - area = child.isMinus() ? split.getMinus() : split.getPlus(); - - child = parent; - } - - return area; - } - /** {@inheritDoc} */ @Override protected void invalidate() { @@ -302,7 +281,20 @@ public final class RegionBSPTree2D extends AbstractRegionBSPTree<Vector2D, Regio * @return the region represented by this node */ public ConvexArea getNodeRegion() { - return ((RegionBSPTree2D) getTree()).computeNodeRegion(this); + ConvexArea area = ConvexArea.full(); + + RegionNode2D child = this; + RegionNode2D parent; + + while ((parent = child.getParent()) != null) { + Split<ConvexArea> split = area.split(parent.getCutHyperplane()); + + area = child.isMinus() ? split.getMinus() : split.getPlus(); + + child = parent; + } + + return area; } /** {@inheritDoc} */ diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Point1S.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Point1S.java index 44c720b..7b08ea5 100644 --- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Point1S.java +++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/Point1S.java @@ -20,6 +20,7 @@ import java.util.Comparator; import java.util.Objects; import org.apache.commons.geometry.core.Point; +import org.apache.commons.geometry.core.internal.DoubleFunction1N; import org.apache.commons.geometry.core.internal.SimpleTupleFormat; import org.apache.commons.geometry.core.precision.DoublePrecisionContext; import org.apache.commons.geometry.euclidean.twod.PolarCoordinates; @@ -352,7 +353,7 @@ public final class Point1S implements Point<Point1S> { * @throws IllegalArgumentException if the given string has an invalid format */ public static Point1S parse(final String str) { - return SimpleTupleFormat.getDefault().parse(str, a -> of(a)); + return SimpleTupleFormat.getDefault().parse(str, (DoubleFunction1N<Point1S>) Point1S::of); } /** Compute the signed shortest distance (angular separation) between two points. The return diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2S.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2S.java index e723ba9..d519e22 100644 --- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2S.java +++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2S.java @@ -188,27 +188,6 @@ public class RegionBSPTree2S extends AbstractRegionBSPTree<Point2S, RegionBSPTre boundaryPaths = null; } - /** Compute the region represented by the given node. - * @param node the node to compute the region for - * @return the region represented by the given node - */ - private ConvexArea2S computeNodeRegion(final RegionNode2S node) { - ConvexArea2S area = ConvexArea2S.full(); - - RegionNode2S child = node; - RegionNode2S parent; - - while ((parent = child.getParent()) != null) { - Split<ConvexArea2S> split = area.split(parent.getCutHyperplane()); - - area = child.isMinus() ? split.getMinus() : split.getPlus(); - - child = parent; - } - - return area; - } - /** Compute the great arc paths comprising the region boundary. * @return the great arc paths comprising the region boundary */ @@ -260,7 +239,20 @@ public class RegionBSPTree2S extends AbstractRegionBSPTree<Point2S, RegionBSPTre * @return the region represented by this node */ public ConvexArea2S getNodeRegion() { - return ((RegionBSPTree2S) getTree()).computeNodeRegion(this); + ConvexArea2S area = ConvexArea2S.full(); + + RegionNode2S child = this; + RegionNode2S parent; + + while ((parent = child.getParent()) != null) { + Split<ConvexArea2S> split = area.split(parent.getCutHyperplane()); + + area = child.isMinus() ? split.getMinus() : split.getPlus(); + + child = parent; + } + + return area; } /** {@inheritDoc} */ diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1STest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1STest.java index 4ef7ff7..34f6412 100644 --- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1STest.java +++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1STest.java @@ -18,7 +18,6 @@ package org.apache.commons.geometry.spherical.oned; import java.util.List; -import org.apache.commons.numbers.angle.PlaneAngleRadians; import org.apache.commons.geometry.core.Region; import org.apache.commons.geometry.core.RegionLocation; import org.apache.commons.geometry.core.partitioning.Split; diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/AbstractGreatArcPathConnectorTest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/AbstractGreatArcPathConnectorTest.java index 89f8d55..99dd2b7 100644 --- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/AbstractGreatArcPathConnectorTest.java +++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/AbstractGreatArcPathConnectorTest.java @@ -292,8 +292,6 @@ public class AbstractGreatArcPathConnectorTest { private static class TestConnector extends AbstractGreatArcConnector { - private static final long serialVersionUID = 1L; - @Override protected ConnectableGreatArc selectConnection(ConnectableGreatArc incoming, List<ConnectableGreatArc> outgoing) {