triangulation_orient, a Fortran90 code 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 information on this web page is distributed under the MIT license.
triangulation_orient is available in a C++ version and a Fortran90 version and a MATLAB version and an Octave version.
table_delaunay, a Fortran90 code which computes the Delaunay triangulation of a set of points.
triangle, a C code which computes a triangulation of a geometric region.
triangulation, a Fortran90 code which carries out various operations on order 3 ("linear") or order 6 ("quadratic") triangulations.
triangulation_boundary_nodes, a Fortran90 code which reads data defining a triangulation, determines which nodes lie on the boundary, and writes their coordinates to a file.
triangulation_corner, a Fortran90 code which patches triangulations so that no triangle has two sides on the boundary.
triangulation_delaunay_discrepancy, a Fortran90 code which measures the amount by which a triangulation fails the local Delaunay test;
triangulation_display_opengl, a C++ code which reads files defining a triangulation and displays an image using OpenGL.
triangulation_histogram, a Fortran90 code which computes histograms of data over a triangulation.
triangulation_l2q, a Fortran90 code which reads data defining a 3-node triangulation and generates midside nodes and writes out the corresponding 6-node triangulation.
triangulation_mask, a Fortran90 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_plot, a Fortran90 code which reads data defining a triangulation and creates a PostScript image of the nodes and triangles.
triangulation_q2l, a Fortran90 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 Fortran90 code which estimates the integral of a function over a triangulated region.
triangulation_quality, a Fortran90 code which reads data defining a triangulation and computes a number of quality measures.
triangulation_rcm, a Fortran90 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 Fortran90 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_triangle_neighbors, a Fortran90 code which reads data defining a triangulation, determines the neighboring triangles of each triangle, and writes that information to a file.