code: def plot_trisurf(x, y, z, triangles=None, lines=None, color=default_color, u=None, v=None, texture=None):
      
      fig = gcf()
      if triangles is not None:
          triangles = np.array(triangles).astype(dtype=np.uint32)
      if lines is not None:
          lines = np.array(lines).astype(dtype=np.uint32)
      mesh = ipv.Mesh(x=x, y=y, z=z, triangles=triangles, lines=lines, color=color, u=u, v=v, texture=texture)
      _grow_limits(np.array(x).reshape(-1), np.array(y).reshape(-1), np.array(z).reshape(-1))
      fig.meshes = fig.meshes + [mesh]
      return mesh
docs: Draw a polygon/triangle mesh defined by a coordinate and triangle indices.
  
      The following example plots a rectangle in the z==2 plane, consisting of 2 triangles:
  
      >>> plot_trisurf([0, 0, 3., 3.], [0, 4., 0, 4.], 2,
             triangles=[[0, 2, 3], [0, 3, 1]])
  
      Note that the z value is constant, and thus not a list/array. For guidance, the triangles
      refer to the vertices in this manner::
  
          ^ ydir
          |
          2 3
          0 1  ---> x dir
  
      Note that if you want per face/triangle colors, you need to duplicate each vertex.
  
  
      :param x: {x}
      :param y: {y}
      :param z: {z}
      :param triangles: numpy array with indices referring to the vertices, defining the triangles, with shape (M, 3)
      :param lines: numpy array with indices referring to the vertices, defining the lines, with shape (K, 2)
      :param color: {color}
      :param u: {u}
      :param v: {v}
      :param texture: {texture}
      :return: :any:`Mesh`