pub fn project_point_to_surface( surface: &NurbsSurface, point: Vec3, ) -> Result<SurfaceProjection, String>