protected Split splitOnIntersection()

in commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/ReverseRay.java [182:205]


    protected Split<LineConvexSubset> splitOnIntersection(final Line splitter, final Vector2D intersection) {
        final Line line = getLine();
        final Precision.DoubleEquivalence splitterPrecision = splitter.getPrecision();

        final int endCmp = splitterPrecision.compare(splitter.offset(endPoint), 0.0);
        final boolean pointsTowardPlus = splitter.getOffsetDirection().dot(line.getDirection()) >= 0.0;

        if (pointsTowardPlus && endCmp < 1) {
            // entirely on minus side
            return new Split<>(this, null);
        } else if (!pointsTowardPlus && endCmp > -1) {
            // entirely on plus side
            return new Split<>(null, this);
        }

        // we're going to be split
        final Segment splitSeg = new Segment(line, intersection, endPoint);
        final ReverseRay splitRevRay = new ReverseRay(line, intersection);

        final LineConvexSubset minus = (endCmp > 0) ? splitRevRay : splitSeg;
        final LineConvexSubset plus = (endCmp > 0) ? splitSeg : splitRevRay;

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