After Triangle finishes writing a mesh to disk, it generates statistics describing the mesh. Typically, they appear as follows.

Statistics: Input vertices: 518 Input segments: 518 Input holes: 6 Mesh vertices: 811 Mesh triangles: 1110 Mesh edges: 1926 Mesh exterior boundary edges: 522 Mesh interior boundary edges: 0 Mesh subsegments (constrained edges): 522Most of these figures are self-explanatory. `Exterior boundary edges' is the total number of edges on the boundary of the mesh, including internal holes. (Each exterior boundary edge is an edge of just one triangle). `Interior boundary edges' is the total number of subsegments (constrained edges that make up input segments) that are not on the boundary of the mesh. (Each interior boundary edge is an edge of two triangles). `Mesh subsegments' is the sum of the exterior and interior boundary edges.

When the -V switch is used, more detailed statistics are generated, as illustrated below.

Mesh quality statistics: Smallest area: 2.4708e-06 | Largest area: 0.002675 Shortest edge: 0.0018129 | Longest edge: 0.10057 Shortest altitude: 0.0011442 | Largest aspect ratio: 4.6264 Triangle aspect ratio histogram: 1.1547 - 1.5 : 158 | 15 - 25 : 0 1.5 - 2 : 366 | 25 - 50 : 0 2 - 2.5 : 259 | 50 - 100 : 0 2.5 - 3 : 178 | 100 - 300 : 0 3 - 4 : 142 | 300 - 1000 : 0 4 - 6 : 7 | 1000 - 10000 : 0 6 - 10 : 0 | 10000 - 100000 : 0 10 - 15 : 0 | 100000 - : 0 (Aspect ratio is longest edge divided by shortest altitude) Smallest angle: 15.024 | Largest angle: 133.2 Angle histogram: 0 - 10 degrees: 0 | 90 - 100 degrees: 150 10 - 20 degrees: 1 | 100 - 110 degrees: 151 20 - 30 degrees: 379 | 110 - 120 degrees: 68 30 - 40 degrees: 466 | 120 - 130 degrees: 20 40 - 50 degrees: 439 | 130 - 140 degrees: 3 50 - 60 degrees: 441 | 140 - 150 degrees: 0 60 - 70 degrees: 367 | 150 - 160 degrees: 0 70 - 80 degrees: 650 | 160 - 170 degrees: 0 80 - 90 degrees: 195 | 170 - 180 degrees: 0 Memory allocation statistics: Maximum number of vertices: 811 Maximum number of triangles: 1110 Maximum number of subsegments: 522 Maximum number of encroached subsegments: 1 Maximum number of bad triangles: 531 Maximum number of stacked triangle flips: 4 Approximate heap memory use (bytes): 95440The mesh quality statistics are self-explanatory. The memory allocation statistics describe the use of various internal structures, whose purpose can be divined by reading the comments in the source code for Triangle. (`Viri' are used to spread holes and area constraints.) The memory use is the most salient statistic, giving an account of most of the memory dynamically allocated by Triangle.

Algorithmic statistics: Number of incircle tests: 7362 Number of 2D orientation tests: 15346 Number of triangle circumcenter computations: 292An `incircle' test checks whether a point falls inside the unique circle that passes through three other points. An `orientation' test checks three points to see if they are arranged in clockwise or counterclockwise order, or if they are collinear. A `circumcenter computation' finds the center of the circumscribing circle of a triangle; this operation is used to generate Steiner points for the Delaunay refinement algorithm, and vertices for the Voronoi diagram.

If you've forgotten the statistics for an existing mesh, run Triangle on that mesh with the -rNEP switches to read the mesh and print the statistics without writing any files. Also use the -p switch if you've got a .poly file for the mesh, and the -V switch if you want mesh quality statistics.

Return to Triangle home page.

jrs@cs.berkeley.edu