in commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/twod/Lines.java [258:281]
public static LineConvexSubset subsetFromInterval(final Line line, final double a, final double b) {
final double min = Math.min(a, b);
final double max = Math.max(a, b);
final boolean hasMin = Double.isFinite(min);
final boolean hasMax = Double.isFinite(max);
if (hasMin) {
if (hasMax) {
// has both
return new Segment(line, line.toSpace(min), line.toSpace(max));
}
// min only
return new Ray(line, line.toSpace(min));
} else if (hasMax) {
// max only
return new ReverseRay(line, line.toSpace(max));
} else if (Double.isInfinite(min) && Double.isInfinite(max) && Double.compare(min, max) < 0) {
return new LineSpanningSubset(line);
}
throw new IllegalArgumentException(MessageFormat.format(
"Invalid line subset interval: {0}, {1}", Double.toString(a), Double.toString(b)));
}