# TRIANGULATE

`triangulate`

will take an ordered set of nodes in the current 2d mesh
object that define a perimeter of a polygon and create a trangulation of
the polygon.

The nodes are assumed to lie in the xy plane; the z coordinate is ignored.

The code will exit early if orientation or node ordering is not correct.

Use `REFINE`

and `SMOOTH`

to break triangles into desired resolution.

No checks are performed to verify that the nodes define a legal perimeter (i.e. that segments of the perimeter do not
cross). The code will connect the last node to the first node to complete the perimeter.

This code supports triangulation of self-intersecting polygons (polygon with holes), assuming that the order of the nodes are correct. Moreover
the connectivity of the polyline must also be defined correctly. No checks are made.

One disadvantage of the algorithm for triangulating self-intersecting polygons is that it does not always work. For example, if the holes have
complicated shapes, with many concave vertices, the code might fail. In this case, the user may try to rotate the order of the nodes:

*Issue 57* is a known difficulty in the case where polygon points have a large number of co-linear points.

## SYNTAX

**triangulate** /
**triangulate** / **clockwise** or **counterclockwise**

`clockwise`

or `counterclockwise`

(default clockwise) Orientation is defined with the viewer above the xy plane.

## EXAMPLES

```
triangulate
triangulate/clockwise
```

Both examples will triangulate the points in the clockwise direction.

```
cmo/create/2dmesh /// tri
read/avs/2dfile.avs
triangulate/counterclockwise
refine/rivara///edge/1 0 0/ 0.05 ///inclusive
```

Triangulate a polygon and then use refine/rivara to refine mesh to desired element size.

Click here for demos