code: def Sphere(radius=0.5, center=(0, 0, 0), direction=(0, 0, 1), theta_resolution=30,
             phi_resolution=30, start_theta=0, end_theta=360, start_phi=0, end_phi=180):
      
      sphere = vtk.vtkSphereSource()
      sphere.SetRadius(radius)
      sphere.SetThetaResolution(theta_resolution)
      sphere.SetPhiResolution(phi_resolution)
      sphere.SetStartTheta(start_theta)
      sphere.SetEndTheta(end_theta)
      sphere.SetStartPhi(start_phi)
      sphere.SetEndPhi(end_phi)
      sphere.Update()
      surf = PolyData(sphere.GetOutput())
      surf.rotate_y(-90)
      translate(surf, center, direction)
      return surf
docs: Create a vtk Sphere
  
      Parameters
      ----------
      radius : float, optional
          Sphere radius
  
      center : np.ndarray or list, optional
          Center in [x, y, z]
  
      direction : list or np.ndarray
          Direction the top of the sphere points to in [x, y, z]
  
      theta_resolution: int , optional
          Set the number of points in the longitude direction (ranging from
          start_theta to end theta).
  
      phi_resolution : int, optional
          Set the number of points in the latitude direction (ranging from
          start_phi to end_phi).
  
      start_theta : float, optional
          Starting longitude angle.
  
      end_theta : float, optional
          Ending longitude angle.
  
      start_phi : float, optional
          Starting latitude angle.
  
      end_phi : float, optional
          Ending latitude angle.
  
      Returns
      -------
      sphere : vtki.PolyData
          Sphere mesh.