triangulation_triangle_neighbors, an Octave code which computes the three neighboring triangles of each triangle in a triangulation.

The user supplies a node file and a triangle file, containing the coordinates of the nodes, and the indices of the nodes that make up each triangle. Either 3-node or 6-node triangles may be used.

The program reads the data, computes the triangle neighbor information, and writes out the information to a file. In cases where one side of a triangle has no triangle neighbor, a value of -1 is assigned.

The triangle neighbor array is useful if the triangulation has to be searched to find the triangle containing a given point. It is also useful when analyzing the bandwidth of the adjacency matrix, or of a finite element matrix derived from the triangulation.


triangulation_triangle_neighbors ( 'prefix' )
where 'prefix' is the common prefix for the node and triangle files, and will also be used to name the output file:


The computer code and data files described and made available on this web page are distributed under the MIT license


triangulation_triangle_neighbors is available in a C version and a C++ version and a Fortran90 version and a MATLAB version and an Octave version.

Related Data and Programs:

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

mesh_to_xml, an Octave code which reads information defining a 1d, 2d or 3d mesh, namely a file of node coordinates and a file of elements defined by node indices, and creates a corresponding xml file for input to dolfin or fenics.

neighbors_to_metis_graph, an Octave code which reads a triangle mesh neighbor file created by triangulation_triangle_neighbors and writes a modified version of the same data suitable for input to the mesh partitioning program metis.

rcm, an Octave code which uses the reverse cuthill-mckee method for mesh renumbering.

tet_mesh_rcm, an Octave code which applies the reverse cuthill-mckee reordering to a tetrahedral mesh of nodes in 3d.

triangulation, an Octave code which carries out various operations on order 3 ("linear") or order 6 ("quadratic") triangulations.

triangulation_boundary_edges, an Octave 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, an Octave code which reads data defining a triangulation, determines which nodes lie on the boundary, and writes their coordinates to a file.

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

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

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

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

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

triangulation_mask, an Octave 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, an Octave 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, an Octave code which reads data defining a triangulation and creates a postscript image of the nodes and triangles.

triangulation_q2l, an Octave 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, an Octave code which estimates the integral of a function over a triangulated region.

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

triangulation_rcm, an Octave code which can reorder the nodes of a triangulation so that the bandwidth of the associated adjacency matrix is reduced.

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


voronoi_neighbors, an Octave code which is given a set of points in the plane and determines the voronoi adjacency structure, that is, which points share an edge of the voronoi diagram.


  1. Marc deBerg, Marc Krevald, Mark Overmars, Otfried Schwarzkopf,
    Computational Geometry,
    Springer, 2000,
    ISBN: 3-540-65620-0.
  2. Joseph ORourke,
    Computational Geometry,
    Second Edition,
    Cambridge, 1998,
    ISBN: 0521649765,
    LC: QA448.D38.

Source Code:

Last revised on 06 July 2023.