triangulation (original) (raw)
triangulation, a C 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.
Licensing:
The computer code and data files described and made available on this web page are distributed under the MIT license
Languages:
triangulation is available ina C version anda C++ version anda FORTRAN90 version anda MATLAB version.
Related Programs:
TRIANGLE, a C code which computes a triangulation of a geometric region.
TRIANGULATION_NODE_TO_ELEMENT, a C code which reads files describing a set of nodes, their triangulation, and the value of one or more quantities at each node, and outputs a file that averages the quantities for each element. This operation in effect creates an "order1" finite element model of the data.
TRIANGULATION_SVG, a C code which creates a Scalable Vector Graphics (SVG) image of a triangulation, which can be displayed by a web browser.
TRIANGULATION_TRIANGLE_NEIGHBORS, a C code which reads data defining a triangulation, determines the neighboring triangles of each triangle, and writes that information to a file.
References:
- Franz Aurenhammer,
Voronoi diagrams - a study of a fundamental geometric data structure,
ACM Computing Surveys,
Volume 23, Number 3, September 1991, pages 345-405. - Paul Bratley, Bennett Fox, Linus Schrage,
A Guide to Simulation,
Second Edition,
Springer, 1987,
ISBN: 0387964673. - Marc deBerg, Marc Krevald, Mark Overmars, Otfried Schwarzkopf,
Computational Geometry,
Springer, 2000,
ISBN: 3-540-65620-0. - Barry Joe,
GEOMPACK - a software package for the generation of meshes using geometric algorithms,
Advances in Engineering Software,
Volume 13, 1991, pages 325-331. - Albert Nijenhuis, Herbert Wilf,
Combinatorial Algorithms for Computers and Calculators,
Second Edition,
Academic Press, 1978,
ISBN: 0-12-519260-6,
LC: QA164.N54. - 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. - Joseph ORourke,
Computational Geometry,
Second Edition,
Cambridge, 1998,
ISBN: 0521649765,
LC: QA448.D38.
Source Code:
- <triangulation.c>, the source code.
- <triangulation.sh>, compiles the source code.
- <triangulation.h>, the include file.
Last revised 23 August 2019