private void characterizeHyperplaneSubset()

in commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/bsp/AbstractRegionBSPTree.java [746:771]


        private void characterizeHyperplaneSubset(final HyperplaneConvexSubset<P> sub,
                final AbstractRegionNode<P, N> node, final List<? super HyperplaneConvexSubset<P>> in,
                final List<? super HyperplaneConvexSubset<P>> out) {

            if (sub != null) {
                if (node.isLeaf()) {
                    if (node.isInside() && in != null) {
                        in.add(sub);
                    } else if (node.isOutside() && out != null) {
                        out.add(sub);
                    }
                } else {
                    final Split<? extends HyperplaneConvexSubset<P>> split = sub.split(node.getCutHyperplane());

                    // Continue further on down the subtree with the same subset if the
                    // subset lies directly on the current node's cut
                    if (split.getLocation() == SplitLocation.NEITHER) {
                        characterizeHyperplaneSubset(sub, node.getPlus(), in, out);
                        characterizeHyperplaneSubset(sub, node.getMinus(), in, out);
                    } else {
                        characterizeHyperplaneSubset(split.getPlus(), node.getPlus(), in, out);
                        characterizeHyperplaneSubset(split.getMinus(), node.getMinus(), in, out);
                    }
                }
            }
        }