docs: @Pure
  	public static double computeLineLineIntersectionFactor(
  			double x1, double y1, double z1, double x2, double y2, double z2,
  			double x3, double y3, double z3, double x4, double y4, double z4) {
  
  		//We compute the 4 vectors P1P2, P3P4, P1P3 and P2P4
  		Vector3f a = new Vector3f(x2 - x1, y2 - y1, z2 - z1); 
  		Vector3f b = new Vector3f(x4 - x3, y4 - y3, z4 - z3); 
  		Vector3f c = new Vector3f(x3 - x1, y3 - y1, z3 - z1); 
  
  		Vector3D v = a.cross(b);
  		
  		//If the cross product is zero then the two segments are parallels
  		if (MathUtil.isEpsilonZero(v.lengthSquared())) {
  			return Double.NaN;
  		}
  
  		//If the determinant det(c,a,b)=c.(a x b)!=0 then the two segment are not colinears
  		if (!MathUtil.isEpsilonZero(c.dot(v))) {
  			return Double.NaN;
  		}
  
  		return FunctionalVector3D.determinant(
  				c.getX(), c.getY(), c.getZ(),
  				b.getX(), b.getY(), b.getZ(),
  				v.getX(), v.getY(), v.getZ()) / v.lengthSquared();
  	}