docs: @Pure
  	protected static Plane3D<?> toPlane(
  			double tx1, double ty1, double tz1,
  			double tx2, double ty2, double tz2,
  			double tx3, double ty3, double tz3) {
  		Vector3f norm = new Vector3f();
  		FunctionalVector3D.crossProduct(
  				tx2 - tx1,
  				ty2 - ty1,
  				tz2 - tz1,
  				tx3 - tx1,
  				ty3 - ty1,
  				tz3 - tz1,
  				norm);
  		assert(norm!=null);
  		if (norm.getY()==0. && norm.getZ()==0.)
  			return new PlaneYZ4f(tx1);
  		if (norm.getX()==0. && norm.getZ()==0.)
  			return new PlaneXZ4f(ty1);
  		if (norm.getX()==0. && norm.getY()==0.)
  			return new PlaneXY4f(tz1);
  		return new Plane4f(tx1, ty1, tz1, tx2, ty2, tz2, tx3, ty3, tz3);
  	}