# triangulation

triangulation, a MATLAB code which computes a triangulation of a set of points in 2D, and carries out various other related operations on triangulations of order 3 or 6.

The mesh is the collection of triangles. Each triangle is termed an "element". The points used to define the shape of the triangle (the corners, and sometimes a few more points) are called the "nodes".

Routines are available to:

• evaluate "quality measures" for the mesh;
• create a "node neighbor array" for each node;
• create an "element neighbor array" for each element;
• estimate the integral of a function over the region covered by the mesh;
• plot the nodes and elements of a mesh;
• determine the parts of the mesh that lie on the boundary;
• sample points at random from the region covered by the mesh;
• search a mesh to determine which element contains a point.

Since triangulations are often used to define a finite element mesh, which in turn defines a sparse matrix, there are routines available which can define the sparse compressed column arrays needed for a sparse matrix associated with a mesh of order 3 or 6. The special case of the Taylor-Hood mixed element is also handled, which is essentially an order 6 grid counted twice and an order 3 grid that only uses the vertices of the order 6 grid.

### Languages:

triangulation is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version.

### Related Data and Programs:

distmesh, a MATLAB code which takes the definition of a 2d region, and fills it up with a set of nodes, and triangulates those nodes to make a triangulation of the region. the region may be nonconvex and may include holes; the user may request a specific density for the nodes, and may require certain points to be in the set of nodes.

mesh_bandwidth, a MATLAB code which returns the geometric bandwidth associated with a mesh of elements of any order and in a space of arbitrary dimension.

mesh2d, a MATLAB code which can automatically create a triangular mesh for a given polygonal region, by darren engwirda.

test_triangulation, a MATLAB code which can set up a number of triangulation test problems.

triangulation_boundary_edges, a MATLAB code which reads data defining a triangulation, determines which edges lie on the boundary, organizes them into connected components, and writes this information to a file.

triangulation_boundary_nodes, a MATLAB code which reads data defining a triangulation, determines which nodes lie on the boundary, and writes their coordinates to a file.

triangulation_corner, a MATLAB code which patches triangulations so that no triangle has two sides on the boundary.

triangulation_delaunay_discrepancy, a MATLAB code which measures the amount by which a triangulation fails the local delaunay test;

triangulation_display, a MATLAB code which displays the nodes and elements of a triangulation on the MATLAB graphics screen;

triangulation_histogram, a MATLAB code which computes histograms of data over a triangulation.

triangulation_l2q, a MATLAB code which reads data defining a 3-node triangulation and generates midside nodes and writes out the corresponding 6-node triangulation.

triangulation_mask, a MATLAB code which takes an existing triangulation and deletes triangles and their corresponding nodes as requested by the user.

triangulation_order3, a directory which contains a description and examples of order 3 triangulations.

triangulation_order6, a directory which contains a description and examples of order 6 triangulations.

triangulation_orient, a MATLAB code which reads data defining a triangulation, makes sure that every triangle has positive orientation, and if not, writes a corrected triangle file.

triangulation_plot, a MATLAB code that reads data defining a triangulation and creates a postscript image of the nodes and triangles.

triangulation_q2l, a MATLAB code which reads data defining a 6-node triangulation, and subdivides each triangle into 4 3-node triangles, writing the resulting triangulation to a file.

triangulation_quad, a MATLAB code which estimates the integral of a function over a triangulated region.

triangulation_quality, a MATLAB code which reads data defining a triangulation and computes a number of quality measures.

triangulation_rcm, a MATLAB code which reads data defining a triangulation, determines an ordering of the nodes that will reduce the bandwidth of the adjacency matrix, and writes the new triangulation information to a file.

triangulation_refine, a MATLAB code which reads data defining a triangulation, replaces each triangle by four congruent smaller ones, and writes the new triangulation information to a file.

triangulation_to_gmsh, a MATLAB code which reads a file of node coordinates and a file of elements defined by node indices, and creates a corresponding gmsh mesh file.

triangulation_triangle_neighbors, a MATLAB code which reads data defining a triangulation, determines the neighboring triangles of each triangle, and writes that information to a file.

### Reference:

1. Franz Aurenhammer,
Voronoi diagrams - a study of a fundamental geometric data structure,
ACM Computing Surveys,
Volume 23, Number 3, September 1991, pages 345-405.
2. Paul Bratley, Bennett Fox, Linus Schrage,
A Guide to Simulation,
Second Edition,
Springer, 1987,
ISBN: 0387964673.
3. Marc deBerg, Marc Krevald, Mark Overmars, Otfried Schwarzkopf,
Computational Geometry,
Springer, 2000,
ISBN: 3-540-65620-0.
4. Barry Joe,
GEOMPACK - a software package for the generation of meshes using geometric algorithms,
Volume 13, Number 5, 1991, pages 325-331.
5. Albert Nijenhuis, Herbert Wilf,
Combinatorial Algorithms for Computers and Calculators,
Second Edition,
ISBN: 0-12-519260-6,
LC: QA164.N54.
6. Atsuyuki Okabe, Barry Boots, Kokichi Sugihara, Sung Nok Chiu,
Spatial Tessellations: Concepts and Applications of Voronoi Diagrams,
Second Edition,
Wiley, 2000,
ISBN: 0-471-98635-6,
LC: QA278.2.O36.
7. Joseph ORourke,
Computational Geometry,
Second Edition,
Cambridge, 1998,
ISBN: 0521649765,
LC: QA448.D38.