pub fn make_cylinder_surface( base: Vec3, axis_direction: Vec3, radius: f64, height: f64, ) -> Result<NurbsSurface, String>