pytriangle

A 2D triangulation program originally written by Jonathan Richard Shewchuck


License
Other
Install
pip install pytriangle==1.1

Documentation

pytriangle

A python interface to the 2D triangulation program TRIANGLE written by Jonathan Richard Shewchuck [https://www.cs.cmu.edu/~quake/triangle.html]

Usage

Import the triangle module

import triangle

Create a Triangle instance

t = triangle.Triangle()

Set n boundary points with marker value set to one. Set internal points with marker value set to zero.

pointBoundary = [(x0, y0), (x1, y1), ...]
markerBoundary = [1, 1, ...]
pointInner = [(xn, yn), ...]
markerInner = [0, ...]
points = pointBoundary + pointInner
markers = markerBoundary + markerInner
t.set_points(points, markers=markers)

Create boundary segments, order is counterclockwise for the outer boundary.

segments = [(0, 1), (1, 2), ...(n-1, 0)]
t.set_segments(segments)

If there are holes, you will need to add internal segments, which go clockwise around each hole. Specify the holes by providing a list of points inside each hole. Any point inside the hole will do

holes = [(xh0, yh0), ...]
t.set_holes(holes)

Optionally add attributes (floating point values) to each point. There can be any of attributes. TRIANGLE will add internal points and the attributes will be interpolated on these points and cells. As an example, set the attributes by calling an external function func, which takes the (x, y) coordinates as argument

attributes = [(func(p), ...) for p in points]
t.set_point_attributes(attributes) 

Triangulate the set of points, segments, and holes by specifying the maximum cell area, e.g.

t.triangulate(area=0.01)

The triangulation can be refined with

t.refine(area_ratio=1.5)

which will add triangles.

The triangulation points and their connectivity can be obtained with

points = t.get_points()
triangles = t.get_triangles()

where points is in the format [[(x, y), marker], ...] where marker is 1 on the boundary and zero inside and triangles is in the format [[(i0, i1, i2), (k0, k1, k2), [a0, a1, ...]], ...], i0, i1, and i2 are the vertex indices, k0, k1, and k2 are optional intermediate node indices, and a0, a1, ... are the optional attributes interpolated to cell centers.

Installation

Type

python setup.py install

Alternatively, you can also install pytriangle with pip

pip install pytriangle

Contributors

Alexander Pletzer, Luigi Alberti

Support

Send bug reports and comments to alexander at gokliya dot net