code: def trimesh(self):
          
          # Generate vertices
          xs = self.interface.coords(self, 0, edges=True)
          ys = self.interface.coords(self, 1, edges=True)
  
          if xs.ndim == 1:
              if np.all(xs[1:] < xs[:-1]):
                  xs = xs[::-1]
              if np.all(ys[1:] < ys[:-1]):
                  ys = ys[::-1]
              xs, ys = (np.tile(xs[:, np.newaxis], len(ys)).T,
                        np.tile(ys[:, np.newaxis], len(xs)))
          vertices = (xs.T.flatten(), ys.T.flatten())
  
          # Generate triangle simplexes
          shape = self.dimension_values(2, flat=False).shape
          s0 = shape[0]
          t1 = np.arange(np.product(shape))
          js = (t1//s0)
          t1s = js*(s0+1)+t1%s0
          t2s = t1s+1
          t3s = (js+1)*(s0+1)+t1%s0
          t4s = t2s
          t5s = t3s
          t6s = t3s+1
          t1 = np.concatenate([t1s, t6s])
          t2 = np.concatenate([t2s, t5s])
          t3 = np.concatenate([t3s, t4s])
          ts = (t1, t2, t3)
          for vd in self.vdims:
              zs = self.dimension_values(vd)
              ts = ts + (np.concatenate([zs, zs]),)
  
          # Construct TriMesh
          params = util.get_param_values(self)
          params['kdims'] = params['kdims'] + TriMesh.node_type.kdims[2:]
          nodes = TriMesh.node_type(vertices+(np.arange(len(vertices[0])),),
                                    **{k: v for k, v in params.items()
                                       if k != 'vdims'})
          return TriMesh(((ts,), nodes), **{k: v for k, v in params.items()
                                            if k != 'kdims'})
docs: Converts a QuadMesh into a TriMesh.