docs: @Pure
  	@Override
  	public FunctionalPoint3D getClosestPointTo(Point3D p) {
  		Vector3f v = new Vector3f(p);
  		v.sub(this.getX(), this.getY(), this.getZ());
  		double l = v.lengthSquared();
  		if (l<=(this.getRadius()*this.getRadius())) {
  			if (p instanceof Point3f) return (Point3f)p;
  			return new Point3f(p);
  		}
  		double s = this.getRadius()/Math.sqrt(l);
  		v.scale(s);
  		return new Point3f(this.getX() + v.getX(), this.getY() + v.getY(), this.getZ() + v.getZ());
  	}