code: def facets(mesh, engine=None):
      
      # what is the radius of a circle that passes through the perpendicular
      # projection of the vector between the two non- shared vertices
      # onto the shared edge, with the face normal from the two adjacent faces
      radii = mesh.face_adjacency_radius
      # what is the span perpendicular to the shared edge
      span = mesh.face_adjacency_span
      # a very arbitrary formula for declaring two adjacent faces
      # parallel in a way that is hopefully (and anecdotally) robust
      # to numeric error
      # a common failure mode is two faces that are very narrow with a slight
      # angle between them, so here we divide by the perpendicular span
      # to penalize very narrow faces, and then square it just for fun
      parallel = np.ones(len(radii), dtype=np.bool)
      # if span is zero we know faces are small/parallel
      nonzero = np.abs(span) > tol.zero
      # faces with a radii/span ratio larger than a threshold pass
      parallel[nonzero] = (radii[nonzero] /
                           span[nonzero]) ** 2 > tol.facet_threshold
  
      # run connected components on the parallel faces to group them
      components = connected_components(mesh.face_adjacency[parallel],
                                        nodes=np.arange(len(mesh.faces)),
                                        min_len=2,
                                        engine=engine)
      return components
docs: Find the list of parallel adjacent faces.
  
      Parameters
      ---------
      mesh :  trimesh.Trimesh
      engine : str
         Which graph engine to use:
         ('scipy', 'networkx', 'graphtool')
  
      Returns
      ---------
      facets : sequence of (n,) int
          Groups of face indexes of
          parallel adjacent faces.