docs: @Pure
  	public static double getIntersectionFactorPlaneSegment(
  			double a, double b, double c, double d,
  			double sx1, double sy1, double sz1,
  			double sx2, double sy2, double sz2) {
  		double denom = a * (sx2 - sx1) + b * (sy2 - sy1) + c * (sz2 - sz1);
  		
  		if (denom == 0.) {
  			// Segment and triangle's plane are parallel
  			// Compute the distance between a point of the segment and the plane.
  			double dist = a * sx1 + b * sy1 + c * sz1 + d;
  			if (MathUtil.isEpsilonZero(dist)) {
  				return Double.POSITIVE_INFINITY;
  			}
  		} else {
  			double factor = (-a * sx1 - b * sy1 - c * sz1 - d) / denom;
  			if (factor >= 0. && factor <= 1.) {
  				return factor;
  			}
  		}
  		
  		return Double.NaN;
  	}