TRIANGULATION_ORIENT is a FORTRAN90 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 prefix_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 prefix_elements.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-----3The corrected order 3 triangle:
3 /| / | / | / | / | 1-----2
A misoriented order 6 triangle:
2 /| / | 4 5 / | / | 1--6--3The corrected order 6 triangle:
3 /| / | 6 5 / | / | 1--4--2
triangulation_orient prefixwhere prefix is the common filename prefix:
The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.
TRIANGULATION_ORIENT is available in a C++ version and a FORTRAN90 version and a MATLAB version.
TABLE_DELAUNAY, a FORTRAN90 program which computes the Delaunay triangulation of a set of points.
TRIANGLE, a C program which computes a triangulation of a geometric region.
TRIANGULATION, a FORTRAN90 library which carries out various operations on order 3 ("linear") or order 6 ("quadratic") triangulations.
TRIANGULATION_BOUNDARY_NODES, a FORTRAN90 program which reads data defining a triangulation, determines which nodes lie on the boundary, and writes their coordinates to a file.
TRIANGULATION_CORNER, a FORTRAN90 program which patches triangulations so that no triangle has two sides on the boundary.
TRIANGULATION_DELAUNAY_DISCREPANCY, a FORTRAN90 program which measures the amount by which a triangulation fails the local Delaunay test;
TRIANGULATION_DISPLAY_OPENGL, a C++ program which reads files defining a triangulation and displays an image using Open GL.
TRIANGULATION_HISTOGRAM, a FORTRAN90 program which computes histograms of data over a triangulation.
TRIANGULATION_L2Q, a FORTRAN90 program which reads data defining a 3-node triangulation and generates midside nodes and writes out the corresponding 6-node triangulation.
TRIANGULATION_MASK, a FORTRAN90 program 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_PLOT, a FORTRAN90 program which reads data defining a triangulation and creates a PostScript image of the nodes and triangles.
TRIANGULATION_Q2L, a FORTRAN90 program 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 FORTRAN90 program which estimates the integral of a function over a triangulated region.
TRIANGULATION_QUALITY, a FORTRAN90 program which reads data defining a triangulation and computes a number of quality measures.
TRIANGULATION_RCM, a FORTRAN90 program 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 FORTRAN90 program which 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, a FORTRAN90 program which 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 FORTRAN90 source codes.