docs: @Pure
  	public static double distanceLinePoint(
  			double sx1, double sy1, double sz1, double sx2, double sy2, double sz2,
  			double px, double py, double pz) {
  		// We use the method of the parallelogram
  		// P
  		// o------+------o
  		// \ | \
  		// \ |h \
  		// \ | \
  		// ------o--+----------o-----------
  		// S1 S2
  
  		// vector S1S2 = <vx1, vy1, vz1>
  		double vx1 = sx2 - sx1;
  		double vy1 = sy2 - sy1;
  		double vz1 = sz2 - sz1;
  
  		// vector S1P = <vx2, vy2, vz2>
  		double vx2 = px - sx1;
  		double vy2 = py - sy1;
  		double vz2 = pz - sz1;
  
  		// Let's take the cross product S1S2 X S1P.
  		Vector3f cross = new Vector3f();
  		FunctionalVector3D.crossProduct(vx1, vy1, vz1, vx2, vy2, vz2, cross);
  
  		// Let's let (a) be the length of S1S2 X S1P.
  		double a = cross.length();
  
  		// If you divide (a) by the distance S1S2 you will get the distance of P
  		// from line S1S2.
  		double s1s2 = Math.sqrt(vx1 * vx1 + vy1 * vy1 + vz1 * vz1);
  
  		// Thus the distance we are looking for is a/s1s2.
  		return a / s1s2;
  	}