protected N findNode()

in commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractBSPTree.java [343:359]


    protected N findNode(final N start, final P pt, final FindNodeCutRule cutRule) {
        final Hyperplane<P> cutHyper = start.getCutHyperplane();
        if (cutHyper != null) {
            final HyperplaneLocation cutLoc = cutHyper.classify(pt);

            final boolean onPlusSide = cutLoc == HyperplaneLocation.PLUS;
            final boolean onMinusSide = cutLoc == HyperplaneLocation.MINUS;
            final boolean onCut = !onPlusSide && !onMinusSide;

            if (onMinusSide || (onCut && cutRule == FindNodeCutRule.MINUS)) {
                return findNode(start.getMinus(), pt, cutRule);
            } else if (onPlusSide || cutRule == FindNodeCutRule.PLUS) {
                return findNode(start.getPlus(), pt, cutRule);
            }
        }
        return start;
    }