code: def surfpv(stvrtx, stdir, a, b, c):
      
      a = ctypes.c_double(a)
      b = ctypes.c_double(b)
      c = ctypes.c_double(c)
      stvrtx = stypes.toDoubleVector(stvrtx)
      stdir = stypes.toDoubleVector(stdir)
      stx = stypes.emptyDoubleVector(6)
      found = ctypes.c_int()
      libspice.surfpv_c(stvrtx, stdir, a, b, c, stx, ctypes.byref(found))
      return stypes.cVectorToPython(stx), bool(found.value)
docs: Find the state (position and velocity) of the surface intercept
      defined by a specified ray, ray velocity, and ellipsoid.
  
      http://naif.jpl.nasa.gov/pub/naif/toolkit_docs/C/cspice/surfpv_c.html
  
      :param stvrtx: State of ray's vertex.
      :type stvrtx: 6-Element Array of floats
      :param stdir: State of ray's direction vector.
      :type stdir: 6-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: State of surface intercept.
      :rtype: list