Statistics

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): 522
Most 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): 95440
The 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: 292
An `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