docs: @Pure
  	public static Point3d computePointProjection(
  			double a, double b, double c, double d,
  			double x, double y, double z) {
  		// Arithmetic resolution
  		/*
  		 * plane.normalize();
  		 * 
  		 * Vector3d n = plane.getNormal(); double d = plane.getEquationComponentD(); // normalization apply that a*a+b*b+c*c = 1
  		 * 
  		 * double xaprime = (n.y*n.y+n.z*n.z)*px -n.x*n.y*py -n.x*n.z*pz -d*n.x;
  		 * 
  		 * double yaprime = -n.x*n.y*px +(n.x*n.x+n.z*n.z)*py +n.y*n.z*pz -d*n.y;
  		 * 
  		 * double zaprime = -n.x*n.z*px +n.y*n.z*py +(n.x*n.x+n.y*n.y)*pz -d*n.z;
  		 * 
  		 * return new Point3d(xaprime,yaprime,zaprime);
  		 */
  
  		// Vectorial resolution
  		Vector3d invnormal = new Vector3d(-a, -b, -c);
  		invnormal.normalize();
  
  		// Distance between the point and the plane
  		double distance = a * x + b * y + c * z + d;
  
  		double xaprime = x + distance * invnormal.getX();
  		double yaprime = y + distance * invnormal.getY();
  		double zaprime = z + distance * invnormal.getZ();
  
  		return new Point3d(xaprime, yaprime, zaprime);
  	}