TRIANGULATION_ORIENT is a C++ program which reads a triangulation, and reorients each triangle that has a negative area. If at least one such triangle is encountered, the program writes out a new copy of the triangle file in which all the triangles have been correctly oriented.
The input file nodes.txt contains the node information for the triangulation. Each data line contains the X and Y coordinates of a single node.
The input file triangles.txt contains the triangle information for the triangulation. Each line contains the indices of 3 or 6 nodes that form a triangle.
For many applications, including computer graphics and finite element computations, it is assumed that the triangles are described with a positive orientation. That is, the nodes are listed in clockwise order.
TRIANGULATION_ORIENT can check whether every triangle in a triangulation has positive orientation, and can "repair" the file if it finds one or more triangles with a negative orientation.
A misoriented order 3 triangle:
2
/|
/ |
/ |
/ |
/ |
1-----3
The corrected order 3 triangle:
3
/|
/ |
/ |
/ |
/ |
1-----2
A misoriented order 6 triangle:
2
/|
/ |
4 5
/ |
/ |
1--6--3
The corrected order 6 triangle:
3
/|
/ |
6 5
/ |
/ |
1--4--2
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
TABLE is the format used for the input and output files.
TABLE_DELAUNAY is an executable C++ program which computes the Delaunay triangulation of a set of points.
TRIANGLE is an executable C program which computes a triangulation of a geometric region.
TRIANGULATION is a C++ library of routines for carrying out various operations on order 3 ("linear") or order 6 ("quadratic") triangulations.
TRIANGULATION_BOUNDARY_NODES is an executable C++ program that reads data defining a triangulation, determines which nodes lie on the boundary, and writes their coordinates to a file.
TRIANGULATION_DISPLAY_OPEN_GL is an executable C++ program which reads files defining a triangulation and displays an image using Open GL.
TRIANGULATION_L2Q is an executable C++ program that reads data defining a 3-node triangulation and generates midside nodes and writes out the corresponding 6-node triangulation.
TRIANGULATION_MASK is an executable C++ program, which takes an existing triangulation and deletes triangles and their corresponding nodes as requested by the user.
TRIANGULATION_ORDER3 is a directory which contains a description and examples of order 3 triangulations.
TRIANGULATION_ORDER6 is a directory which contains a description and examples of order 6 triangulations.
TRIANGULATION_ORIENT is available in a C++ version and a FORTRAN90 version and a MATLAB version.
TRIANGULATION_PLOT is an executable C++ program that reads data defining a triangulation and creates a PostScript image of the nodes and triangles.
TRIANGULATION_Q2L is an executable C++ program that reads data defining a 6-node triangulation, and subdivides each triangle into 4 3-node triangles, writing the resulting triangulation to a file.
TRIANGULATION_QUALITY is an executable C++ program that reads data defining a triangulation and computes a number of quality measures.
TRIANGULATION_RCM is an executable C++ program that 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 is an executable C++ program that reads data defining a triangulation, replaces each triangle by four congruent smaller ones, and writes the new triangulation information to a file.
TRIANGULATION_TRIANGLE_NEIGHBORS is an executable C++ program that reads data defining a triangulation, determines the neighboring triangles of each triangle, and writes that information to a file.
P15 is a triangulation created by DISTMESH. Unfortunately, 512 of the triangles have a negative orientation. In this example, TRIANGULATION_ORIENT was used to reorient those triangles.
You can go up one level to the C++ source codes.