code: def fix_winding(mesh):
      
      # anything we would fix is already done
      if mesh.is_winding_consistent:
          return
  
      graph_all = nx.from_edgelist(mesh.face_adjacency)
      flipped = 0
  
      faces = mesh.faces.view(np.ndarray).copy()
  
      # we are going to traverse the graph using BFS
      # start a traversal for every connected component
      for components in nx.connected_components(graph_all):
          # get a subgraph for this component
          g = graph_all.subgraph(components)
          # get the first node in the graph in a way that works on nx's
          # new API and their old API
          start = next(iter(g.nodes()))
  
          # we traverse every pair of faces in the graph
          # we modify mesh.faces and mesh.face_normals in place
          for face_pair in nx.bfs_edges(g, start):
              # for each pair of faces, we convert them into edges,
              # find the edge that both faces share and then see if edges
              # are reversed in order as you would expect
              # (2, ) int
              face_pair = np.ravel(face_pair)
              # (2, 3) int
              pair = faces[face_pair]
              # (6, 2) int
              edges = faces_to_edges(pair)
              overlap = group_rows(np.sort(edges, axis=1),
                                   require_count=2)
              if len(overlap) == 0:
                  # only happens on non-watertight meshes
                  continue
              edge_pair = edges[overlap[0]]
              if edge_pair[0][0] == edge_pair[1][0]:
                  # if the edges aren't reversed, invert the order of one face
                  flipped += 1
                  faces[face_pair[1]] = faces[face_pair[1]][::-1]
  
      if flipped > 0:
          mesh.faces = faces
  
      log.debug('flipped %d/%d edges', flipped, len(mesh.faces) * 3)
docs: Traverse and change mesh faces in-place to make sure winding
      is correct, with edges on adjacent faces in
      opposite directions.
  
      Parameters
      -------------
      mesh: Trimesh object
  
      Alters
      -------------
      mesh.face: will reverse columns of certain faces