docs: def surfpt(positn, u, a, b, c):
      """
      Determine the intersection of a line-of-sight vector with the
      surface of an ellipsoid.
  
      http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/surfpt_c.html
  
      :param positn: Position of the observer in body-fixed frame.
      :type positn: 3-Element Array of floats
      :param u: Vector from the observer in some direction.
      :type u: 3-Element Array of floats
      :param a: Length of the ellisoid semi-axis along the x-axis.
      :type a: float
      :param b: Length of the ellisoid semi-axis along the y-axis.
      :type b: float
      :param c: Length of the ellisoid semi-axis along the z-axis.
      :type c: float
      :return: Point on the ellipsoid pointed to by u.
      :rtype: 3-Element Array of floats
      """
      a = ctypes.c_double(a)
      b = ctypes.c_double(b)
      c = ctypes.c_double(c)
      positn = stypes.toDoubleVector(positn)
      u = stypes.toDoubleVector(u)
      point = stypes.emptyDoubleVector(3)
      found = ctypes.c_int()
      libspice.surfpt_c(positn, u, a, b, c, point, ctypes.byref(found))
      return stypes.cVectorToPython(point), bool(found.value)