in commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java [332:356]
private SplitLocation determineRegionPlusMinusLocation(final Hyperplane<P> splitter) {
double minusSize = 0;
double plusSize = 0;
Split<? extends HyperplaneConvexSubset<P>> split;
SplitLocation loc;
for (final S boundary : boundaries) {
split = boundary.split(splitter);
loc = split.getLocation();
if (loc == SplitLocation.MINUS || loc == SplitLocation.PLUS) {
return loc;
} else if (loc == SplitLocation.NEITHER) {
return splitter.similarOrientation(boundary.getHyperplane()) ?
SplitLocation.MINUS :
SplitLocation.PLUS;
} else {
minusSize += split.getMinus().getSize();
plusSize += split.getPlus().getSize();
}
}
return minusSize > plusSize ? SplitLocation.MINUS : SplitLocation.PLUS;
}