public Split split()

in commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/EmbeddedTreeLineSubset.java [176:209]


    public Split<EmbeddedTreeLineSubset> split(final Hyperplane<Vector2D> splitter) {
        final Line thisLine = getLine();
        final Line splitterLine = (Line) splitter;
        final Precision.DoubleEquivalence precision = getPrecision();

        final Vector2D intersection = splitterLine.intersection(thisLine);
        if (intersection == null) {
            return getNonIntersectingSplitResult(splitterLine, this);
        }

        final double abscissa = thisLine.abscissa(intersection);
        final OrientedPoint subspaceSplitter = OrientedPoints.fromLocationAndDirection(
                abscissa,
                splitterPlusIsPositiveFacing(splitterLine),
                precision);

        final Split<RegionBSPTree1D> subspaceSplit = region.split(subspaceSplitter);
        final SplitLocation subspaceSplitLoc = subspaceSplit.getLocation();

        if (SplitLocation.MINUS == subspaceSplitLoc) {
            return new Split<>(this, null);
        } else if (SplitLocation.PLUS == subspaceSplitLoc) {
            return new Split<>(null, this);
        }

        final EmbeddedTreeLineSubset minus = (subspaceSplit.getMinus() != null) ?
                new EmbeddedTreeLineSubset(thisLine, subspaceSplit.getMinus()) :
                null;
        final EmbeddedTreeLineSubset plus = (subspaceSplit.getPlus() != null) ?
                new EmbeddedTreeLineSubset(thisLine, subspaceSplit.getPlus()) :
                null;

        return new Split<>(minus, plus);
    }