#### 30.1.1 Plotting the Triangulation

Octave has the functions `triplot`, `trimesh`, and `trisurf` to plot the Delaunay triangulation of a 2-dimensional set of points. `tetramesh` will plot the triangulation of a 3-dimensional set of points.

: triplot (tri, x, y)
: triplot (tri, x, y, linespec)
: h = triplot (…)

Plot a 2-D triangular mesh.

tri is typically the output of a Delaunay triangulation over the grid of x, y. Every row of tri represents one triangle and contains three indices into [x, y] which are the vertices of the triangles in the x-y plane.

The linestyle to use for the plot can be defined with the argument linespec of the same format as the `plot` command.

The optional return value h is a graphics handle to the created patch object.

: trimesh (tri, x, y, z, c)
: trimesh (tri, x, y, z)
: trimesh (tri, x, y)
: trimesh (…, prop, val, …)
: h = trimesh (…)

Plot a 3-D triangular wireframe mesh.

In contrast to `mesh`, which plots a mesh using rectangles, `trimesh` plots the mesh using triangles.

tri is typically the output of a Delaunay triangulation over the grid of x, y. Every row of tri represents one triangle and contains three indices into [x, y] which are the vertices of the triangles in the x-y plane. z determines the height above the plane of each vertex. If no z input is given then the triangles are plotted as a 2-D figure.

The color of the trimesh is computed by linearly scaling the z values to fit the range of the current colormap. Use `caxis` and/or change the colormap to control the appearance.

Optionally, the color of the mesh can be specified independently of z by supplying a color matrix, c. If z has N elements, then c should be an Nx1 vector for colormap data or an Nx3 matrix for RGB data.

Any property/value pairs are passed directly to the underlying patch object.

The optional return value h is a graphics handle to the created patch object.

: trisurf (tri, x, y, z, c)
: trisurf (tri, x, y, z)
: trisurf (…, prop, val, …)
: h = trisurf (…)

Plot a 3-D triangular surface.

In contrast to `surf`, which plots a surface mesh using rectangles, `trisurf` plots the mesh using triangles.

tri is typically the output of a Delaunay triangulation over the grid of x, y. Every row of tri represents one triangle and contains three indices into [x, y] which are the vertices of the triangles in the x-y plane. z determines the height above the plane of each vertex.

The color of the trimesh is computed by linearly scaling the z values to fit the range of the current colormap. Use `caxis` and/or change the colormap to control the appearance.

Optionally, the color of the mesh can be specified independently of z by supplying a color matrix, c. If z has N elements, then c should be an Nx1 vector for colormap data or an Nx3 matrix for RGB data.

Any property/value pairs are passed directly to the underlying patch object.

The optional return value h is a graphics handle to the created patch object.

: tetramesh (T, X)
: tetramesh (T, X, C)
: tetramesh (…, property, val, …)
: h = tetramesh (…)

Display the tetrahedrons defined in the m-by-4 matrix T as 3-D patches.

T is typically the output of a Delaunay triangulation of a 3-D set of points. Every row of T contains four indices into the n-by-3 matrix X of the vertices of a tetrahedron. Every row in X represents one point in 3-D space.

The vector C specifies the color of each tetrahedron as an index into the current colormap. The default value is 1:m where m is the number of tetrahedrons; the indices are scaled to map to the full range of the colormap. If there are more tetrahedrons than colors in the colormap then the values in C are cyclically repeated.

Calling `tetramesh (…, "property", "value", …)` passes all property/value pairs directly to the patch function as additional arguments.

The optional return value h is a vector of patch handles where each handle represents one tetrahedron in the order given by T. A typical use case for h is to turn the respective patch `"visible"` property `"on"` or `"off"`.

Type `demo tetramesh` to see examples on using `tetramesh`.

The difference between `triplot`, and `trimesh` or `triplot`, is that the former only plots the 2-dimensional triangulation itself, whereas the second two plot the value of a function `f (x, y)`. An example of the use of the `triplot` function is
```rand ("state", 2)