Statistics


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

  Input points: 29
  Input segments: 29
  Input holes: 1

  Mesh points: 67
  Mesh triangles: 69
  Mesh edges: 136
  Mesh boundary edges: 65
  Mesh segments: 65
Most of these figures are self-explanatory. `Mesh boundary edges' is the total number of edges on the boundary of the mesh, including internal holes. `Mesh segments' is the number of fixed edges, which includes boundary edges and segments derived from input segments (often, input segments are divided into smaller segments by the Delaunay refinement algorithm). Hence, the number of `mesh boundary edges' and `mesh segments' will differ only if the mesh has internal boundaries.

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

Mesh quality statistics:

  Smallest area:        0.0006784   |  Largest area:         0.023543
  Shortest edge:         0.014881   |  Longest edge:           0.1455
  Shortest altitude:     0.011629   |  Largest aspect ratio:   3.9151

  Aspect ratio histogram:
  1.1547 - 1.5       :         7    |     15 - 25         :         0
     1.5 - 2         :        40    |     25 - 50         :         0
       2 - 2.5       :        15    |     50 - 100        :         0
     2.5 - 3         :         4    |    100 - 300        :         0
       3 - 4         :         3    |    300 - 1000       :         0
       4 - 6         :         0    |   1000 - 10000      :         0
       6 - 10        :         0    |  10000 - 100000     :         0
      10 - 15        :         0    | 100000 -            :         0
  (Triangle aspect ratio is longest edge divided by shortest altitude)

  Smallest angle:          20.248   |  Largest angle:          125.12

  Angle histogram:
      0 -  10 degrees:         0    |     90 - 100 degrees:         9
     10 -  20 degrees:         0    |    100 - 110 degrees:         1
     20 -  30 degrees:         8    |    110 - 120 degrees:         2
     30 -  40 degrees:        37    |    120 - 130 degrees:         1
     40 -  50 degrees:        31    |    130 - 140 degrees:         0
     50 -  60 degrees:        29    |    140 - 150 degrees:         0
     60 -  70 degrees:        30    |    150 - 160 degrees:         0
     70 -  80 degrees:        33    |    160 - 170 degrees:         0
     80 -  90 degrees:        26    |    170 - 180 degrees:         0

Memory allocation statistics:

  Maximum number of points: 67
  Maximum number of triangles: 69
  Maximum number of segments: 65
  Maximum number of encroached segments: 12
  Maximum number of bad triangles: 5
  Approximate heap memory use (bytes): 11760
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: 302
  Number of orientation tests: 415
  Number of circumcenter computations: 5
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 Voronoï 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 suppress all output). Also use the -p switch if there is a .poly file for the mesh, and the -V switch if you want mesh quality statistics.


Return to Triangle home page.
jrs@cs.cmu.edu