# TEST_TRIANGULATION Mesh Generation Test Regions

TEST_TRIANGULATION is a FORTRAN90 library which sets up a number of triangulation test problems.

As far as possible, a uniform and abstract approach has been used. For each test region, a number of routines are provided, via which it is possible for the user to determine many things about the region. Often, just one or two routines would be needed for a particular purpose. The names of the routines, and their purposes are:

• BOUNDARY_NEAREST: returns the nearest point on the boundary of the region to a given point or set of points;
• BOUNDARY_PROJECT: projects exterior points onto the boundary.
• BOUNDARY_SEGMENT: returns a sequence of roughly equally spaced points that lie on one particular boundary segment;
• BOUNDARY_SEGMENT_LENGTH: returns the "length" (number of nodes) of a particular boundary segment. This simply counts the number of points needed to trace or approximate the boundary segment;
• BOUNDARY_SEGMENT_NUM: returns the number of boundary segments. Simple regions have one boundary segment. A region with one hole has two, and so on;
• BOX: returns a bounding box for the region. All points in the region are within this box;
• DENSITY: the value of the mesh density function at any point in the region. If this is not constant, then high values correspond to places where many more mesh points should be placed; is always 2 for this set;
• ELEMENT_SIZE: returns a requested typical element size. This refers to the average size of the triangles formed by a triangulation of the points;
• FIXED_NUM: returns the number of points which must be included as nodes of the mesh (which may be zero);
• FIXED_POINTS: returns the coordinates of the points which must be included as nodes of the mesh;
• HEADER: prints a brief description of the problem;
• HOLE_NUM: returns the number of "holes" in the region;
• HOLE_POINT: returns the coordinates of one point in a hole (useful when TRIANGLE is to be invoked);
• INSIDE: reports which of a given set of points are inside the region.
• SAMPLE: returns a set of sample points from the region, chosen with uniform probability;
• SAMPLE_H1: returns a set of sample points from the region, after it has been enlarged by an amount H1;
• SDIST: returns the signed distance to the boundary of the region for each of a set of input points. (a positive distance means the point is outside the region, a negative distance means it is inside); (Not ready for problems 4, 5, 6, 7, 8, 9 )
• TITLE: a title for the problem;

The test problems include:

1. The unit circle;
2. The unit circle with a circular hole;
3. A square with a circular hole;
4. A hexagon with a hexagonal hole;
5. The horn;
6. The superellipse with a superelliptical hole;
7. The bicycle seat;
8. The slice of pie with a circular hole and triangular notch;
9. Jeff Borggaard's square with two hexagonal holes;
10. The unit square;
11. The L-shaped region;
13. The Sandia fork;
14. Marcus Garvie's Lake Alpha, with Beta Island;
15. Sangbum Kim's forward step;

### Languages:

TEST_TRIANGULATION is available in a FORTRAN90 version and a MATLAB version.

### Related Data and Programs:

CVT_TRIANGULATION, a FORTRAN90 program which uses routines from the TEST_TRIANGULATION library to create a CVT-based triangularization.

DISTMESH, a MATLAB program which takes the definition of a 2D region, and fills it up with a set of nodes, and triangulates those nodes to make a triangulation of the region. The region may be nonconvex and may include holes; the user may request a specific density for the nodes, and may require certain points to be in the set of nodes.

HEX_GRID_TRIANGULATE, a FORTRAN90 program which uses this library of test regions and computes points on a hexagonal grid inside each region.

TABLE_IO, a FORTRAN90 library which is used to write some of the output files.

TRIANGULATION, a FORTRAN90 library which carries out various operations on order 3 ("linear") or order 6 ("quadratic") triangulations.

TRIANGULATION_BOUNDARY_NODES, a FORTRAN90 program which reads data defining a triangulation, determines which nodes lie on the boundary, and writes their coordinates to a file.

TRIANGULATION_DISPLAY_OPENGL, a C++ program which reads files defining a triangulation and displays an image using Open GL.

TRIANGULATION_L2Q, a FORTRAN90 program which reads data defining a 3-node triangulation and generates midside nodes and writes out the corresponding 6-node triangulation.

TRIANGULATION_MASK, a FORTRAN90 program which takes an existing triangulation and deletes triangles and their corresponding nodes as requested by the user.

TRIANGULATION ORDER3, a directory which describes the format for triangulations of order 3.

TRIANGULATION ORDER6, a directory which describes the format for triangulations of order 6.

TRIANGULATION_ORIENT, a FORTRAN90 program which reads data defining a triangulation, makes sure that every triangle has positive orientation, and if not, writes a corrected triangle file.

TRIANGULATION_PLOT, a FORTRAN90 program which reads data defining a triangulation and creates a PostScript image of the nodes and triangles.

TRIANGULATION_Q2L, a FORTRAN90 program which reads data defining a 6-node triangulation, and subdivides each triangle into 4 3-node triangles, writing the resulting triangulation to a file.

TRIANGULATION_QUALITY, a FORTRAN90 program which reads data defining a triangulation and computes a number of quality measures.

TRIANGULATION_RCM, a FORTRAN90 program which reads data defining a triangulation, determines an ordering of the nodes that will reduce the bandwidth of the adjacency matrix, and writes the new triangulation information to a file.

TRIANGULATION_REFINE, a FORTRAN90 program which reads data defining a triangulation, replaces each triangle by four congruent smaller ones, and writes the new triangulation information to a file.

TRIANGULATION_TRIANGLE_NEIGHBORS, a FORTRAN90 program which reads data defining a triangulation, determines the neighboring triangles of each triangle, and writes that information to a file.

### Reference:

1. Marc deBerg, Marc Krevald, Mark Overmars, Otfried Schwarzkopf,
Computational Geometry,
Springer, 2000,
ISBN: 3-540-65620-0.
2. Barry Joe,
GEOMPACK - a software package for the generation of meshes using geometric algorithms,
Volume 13, 1991, pages 325-331.
3. Joseph ORourke,
Computational Geometry,
Second Edition,
Cambridge, 1998,
ISBN: 0521649765,
LC: QA448.D38.
A Simple Mesh Generator in MATLAB,
SIAM Review,
Volume 46, Number 2, June 2004, pages 329-345.

### Examples and Tests:

TEST_TRIANGULATION_PRB carries out some simple tasks with the sample problems.

One of the routines in TEST_TRIANGULATION_PRB calls the appropriate routines to determine the boundary of each region, and creates an Encapsulated PostScript image.

One of the routines in TEST_TRIANGULATION_PRB creates an EPS image of 200 sample points in each region.

One of the routines in TEST_TRIANGULATION_PRB calls the appropriate routine to create a POLY file, which can be displayed by the SHOWME program, or used as the start of a triangulation process involving TRIANGLE.

• p01.poly, TEST_TRIANGULATION problem #1.
• p02.poly, TEST_TRIANGULATION problem #2.
• p03.poly, TEST_TRIANGULATION problem #3.
• p04.poly, TEST_TRIANGULATION problem #4.
• p05.poly, TEST_TRIANGULATION problem #5.
• p06.poly, TEST_TRIANGULATION problem #6.
• p07.poly, TEST_TRIANGULATION problem #7.
• p08.poly, TEST_TRIANGULATION problem #8.
• p09.poly, TEST_TRIANGULATION problem #9.
• p10.poly, TEST_TRIANGULATION problem #10.
• p11.poly, TEST_TRIANGULATION problem #11.
• p12.poly, TEST_TRIANGULATION problem #12.
• p13.poly, TEST_TRIANGULATION problem #13.
• p14.poly, TEST_TRIANGULATION problem #14.
• p15.poly, TEST_TRIANGULATION problem #15.

Simple changes to TEST_TRIANGULATION_PRB can be made so that a file is created containing pairs of sample points and nearest points on the boundary. If the file lists these pairs followed by a blank line, then the PLOT_POINTS can be used, with the "DASH" option, to illustrate the results.

One of the routines in TEST_TRIANGULATION_PRB creates a set of points on a hexagonal grid, contained in a given region. This dataset is written to a file.

### List of Routines:

• ANGLE_CONTAINS_POINT_2D determines if an angle contains a point, in 2D.
• ANGLE_HALF_2D finds half an angle in 2D.
• ANGLE_RAD_2D returns the angle swept out between two rays in 2D.
• ATAN4 computes the inverse tangent of the ratio Y / X.
• BOX_CONTAINS_POINT_2D determines if a point is inside a box in 2D.
• CIRCLE_ARC_POINT_NEAR_2D : nearest point on a circular arc.
• CIRCLE_IMP_CONTAINS_POINT_2D determines if a circle contains a point in 2D.
• CIRCLE_IMP_POINT_NEAR_2D: nearest ( implicit circle, point ) in 2D.
• CIRCLE_SECTOR_CONTAINS_POINT_2D : is a point inside a circular sector?
• COS_DEG returns the cosine of an angle given in degrees.
• DTABLE_DATA_WRITE writes data to a double precision table file.
• DTABLE_WRITE writes a double precision table file.
• FILE_NAME_INC generates the next filename in a series.
• FMIN_RC seeks a minimizer of a scalar function of a scalar variable.
• GET_UNIT returns a free FORTRAN unit number.
• HEX_GRID_ANGLE sets the points in an angled hex grid in a box.
• HEX_GRID_ANGLE_SIZE counts the points in an angled hex grid in a box.
• HEXAGON_CONTAINS_POINT_2D finds if a point is inside a hexagon in 2D.
• I4_MODP returns the nonnegative remainder of integer division.
• I4_WRAP forces an integer to lie between given limits by wrapping.
• P00_BOUNDARY_EPS draws the boundary of a region as an EPS file.
• P00_BOUNDARY_NEAREST returns a nearest boundary point for any problem.
• P00_BOUNDARY_PROJECT projects exterior points to the boundary.
• P00_BOUNDARY_SEGMENT returns a boundary segment in a problem.
• P00_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in a problem.
• P00_BOUNDARY_SEGMENT_NUM counts the boundary segments in a problem.
• P00_BOX returns a bounding box for a problem.
• P00_DENSITY returns the density for a problem.
• P00_ELEMENT_SIZE returns a typical element size for a problem.
• P00_FIXED_NUM returns the number of fixed points in a problem.
• P00_FIXED_POINTS returns the fixed points in a problem.
• P00_HEX_GRID returns hex grid points in a region.
• P00_HEX_GRID_COUNT counts the number of hex grid points in a region.
• P00_HOLE_NUM counts the holes in a problem.
• P00_HOLE_POINT returns a point inside a given hole.
• P00_INSIDE reports if a point is inside the region in a problem.
• P00_POINTS_EPS draws points in a region as an EPS file.
• P00_POLY_WRITE collects data and writes it to a POLY file.
• P00_SAMPLE samples points from the region in a problem.
• P00_SAMPLE_H1 samples points from the enlarged region in a problem.
• P00_SDIST returns the signed distance to the region in a problem.
• P00_TEST_NUM returns the number of available tests.
• P00_TITLE returns a title for a problem.
• P01_BOUNDARY_NEAREST returns a nearest boundary point in problem 01.
• P01_BOUNDARY_PROJECT projects exterior points to the boundary in problem 01.
• P01_BOUNDARY_SEGMENT returns a boundary segment in problem 01.
• P01_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 01.
• P01_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 01.
• P01_BOX returns a bounding box for problem 01.
• P01_DENSITY returns the density for problem 01.
• P01_ELEMENT_SIZE returns a typical element size for problem 01.
• P01_FIXED_NUM returns the number of fixed points in problem 01.
• P01_FIXED_POINTS returns the fixed points in problem 01.
• P01_HOLE_NUM counts the holes in problem 01.
• P01_HOLE_POINT returns a point inside a given hole in problem 1.
• P01_INSIDE reports if a point is inside the region in problem 01.
• P01_SAMPLE samples points from the region in problem 01.
• P01_SAMPLE_H1 samples points from the enlarged region in problem 01.
• P01_SDIST returns the signed distance to the region in problem 01.
• P01_TITLE returns a title for problem 01.
• P02_BOUNDARY_NEAREST returns a nearest boundary point in problem 02.
• P02_BOUNDARY_PROJECT projects exterior points to the boundary in problem 02.
• P02_BOUNDARY_SEGMENT returns a boundary segment in problem 02.
• P02_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 02.
• P02_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 02.
• P02_BOX returns a bounding box for problem 02.
• P02_DENSITY returns the density for problem 02.
• P02_ELEMENT_SIZE returns a typical element size for problem 02.
• P02_FIXED_NUM returns the number of fixed points in problem 02.
• P02_FIXED_POINTS returns the fixed points in problem 02.
• P02_HOLE_NUM counts the holes in problem 02.
• P02_HOLE_POINT returns a point inside a given hole in problem 2.
• P02_INSIDE reports if a point is inside the region in problem 02.
• P02_SAMPLE samples points from the region in problem 02.
• P02_SAMPLE_H1 samples points from the enlarged region in problem 02.
• P02_SDIST returns the signed distance to the region in problem 02.
• P02_TITLE returns a title for problem 02.
• P03_BOUNDARY_NEAREST returns a nearest boundary point in problem 03.
• P03_BOUNDARY_PROJECT projects exterior points to the boundary in problem 03.
• P03_BOUNDARY_SEGMENT returns a boundary segment in problem 03.
• P03_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 03.
• P03_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 03.
• P03_BOX returns a bounding box for problem 03.
• P03_DENSITY returns the density for problem 03.
• P03_ELEMENT_SIZE returns a typical element size for problem 03.
• P03_FIXED_NUM returns the number of fixed points in problem 03.
• P03_FIXED_POINTS returns the fixed points in problem 03.
• P03_HOLE_NUM counts the holes in problem 03.
• P03_HOLE_POINT returns a point inside a given hole in problem 3.
• P03_INSIDE reports if a point is inside the region in problem 03.
• P03_SAMPLE samples points from the region in problem 03.
• P03_SAMPLE samples points from the enlarged region in problem 03.
• P03_SDIST returns the signed distance to the region in problem 03.
• P03_TITLE returns a title for problem 03.
• P04_BOUNDARY_NEAREST returns a nearest boundary point in problem 04.
• P04_BOUNDARY_PROJECT projects exterior points to the boundary in problem 04.
• P04_BOUNDARY_SEGMENT returns a boundary segment in problem 04.
• P04_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 04.
• P04_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 04.
• P04_BOX returns a bounding box for problem 04.
• P04_DENSITY returns the density for problem 04.
• P04_ELEMENT_SIZE returns a typical element size for problem 04.
• P04_FIXED_NUM returns the number of fixed points in problem 04.
• P04_FIXED_POINTS returns the fixed points in problem 04.
• P04_HOLE_NUM counts the holes in problem 04.
• P04_HOLE_POINT returns a point inside a given hole in problem 4.
• P04_INSIDE reports if a point is inside the region in problem 04.
• P04_SAMPLE samples points from the region in problem 04.
• P04_SAMPLE_H1 samples points from the enlarged region in problem 04.
• P04_SDIST returns the signed distance to the region in problem 04.
• P04_TITLE returns a title for problem 04.
• P05_BOUNDARY_NEAREST returns a nearest boundary point in problem 05.
• P05_BOUNDARY_PROJECT projects exterior points to the boundary in problem 05.
• P05_BOUNDARY_SEGMENT returns a boundary segment in problem 05.
• P05_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 05.
• P05_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 05.
• P05_BOX returns a bounding box for problem 05.
• P05_DENSITY returns the density for problem 05.
• P05_ELEMENT_SIZE returns a typical element size for problem 05.
• P05_FIXED_NUM returns the number of fixed points in problem 05.
• P05_FIXED_POINTS returns the fixed points in problem 05.
• P05_HOLE_NUM counts the holes in problem 05.
• P05_HOLE_POINT returns a point inside a given hole in problem 5.
• P05_INSIDE reports if a point is inside the region in problem 05.
• P05_SAMPLE samples points from the region in problem 05.
• P05_SAMPLE_H1 samples points from the enlarged region in problem 05.
• P05_SDIST returns the signed distance to the region in problem 05.
• P05_TITLE returns a title for problem 05.
• P06_BOUNDARY_NEAREST returns a nearest boundary point in problem 06.
• P06_BOUNDARY_NEAREST projects exterior points to the boundary in problem 06.
• P06_BOUNDARY_SEGMENT returns a boundary segment in problem 06.
• P06_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 06.
• P06_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 06.
• P06_BOX returns a bounding box for problem 06.
• P06_DENSITY returns the density for problem 06.
• P06_ELEMENT_SIZE returns a typical element size for problem 06.
• P06_FIXED_NUM returns the number of fixed points in problem 06.
• P06_FIXED_POINTS returns the fixed points in problem 06.
• P06_HOLE_NUM counts the holes in problem 06.
• P06_HOLE_POINT returns a point inside a given hole in problem 6.
• P06_INSIDE reports if a point is inside the region in problem 06.
• P06_SAMPLE samples points from the region in problem 06.
• P06_SAMPLE_H1 samples points from the enlarged region in problem 06.
• P06_SDIST returns the signed distance to the region in problem 06.
• P06_TITLE returns a title for problem 06.
• P07_BOUNDARY_NEAREST returns a nearest boundary point in problem 07.
• P07_BOUNDARY_PROJECT projects exterior points to the boundary in problem 07.
• P07_BOUNDARY_SEGMENT returns a boundary segment in problem 07.
• P07_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 07.
• P07_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 07.
• P07_BOX returns a bounding box for problem 07.
• P07_DENSITY returns the density for problem 07.
• P07_ELEMENT_SIZE returns a typical element size for problem 07.
• P07_FIXED_NUM returns the number of fixed points in problem 07.
• P07_FIXED_POINTS returns the fixed points in problem 07.
• P07_HOLE_NUM counts the holes in problem 07.
• P07_HOLE_POINT returns a point inside a given hole in problem 7.
• P07_INSIDE reports if a point is inside the region in problem 07.
• P07_SAMPLE samples points from the region in problem 07.
• P07_SAMPLE_H1 samples points from the enlarged region in problem 07.
• P07_SDIST returns the signed distance to the region in problem 07.
• P07_TITLE returns a title for problem 07.
• P08_BOUNDARY_NEAREST returns a nearest boundary point in problem 08.
• P08_BOUNDARY_PROJECT projects exterior points to the boundary in problem 08.
• P08_BOUNDARY_SEGMENT returns a boundary segment in problem 08.
• P08_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 08.
• P08_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 08.
• P08_BOX returns a bounding box for problem 08.
• P08_DENSITY returns the density for problem 08.
• P08_ELEMENT_SIZE returns a typical element size for problem 08.
• P08_FIXED_NUM returns the number of fixed points in problem 08.
• P08_FIXED_POINTS returns the fixed points in problem 08.
• P08_HOLE_NUM counts the holes in problem 08.
• P08_HOLE_POINT returns a point inside a given hole in problem 8.
• P08_INSIDE reports if a point is inside the region in problem 08.
• P08_SAMPLE samples points from the region in problem 08.
• P08_SAMPLE_H1 samples points from the enlarged region in problem 08.
• P08_SDIST returns the signed distance to the region in problem 08.
• P08_TITLE returns a title for problem 08.
• P09_BOUNDARY_NEAREST returns a nearest boundary point in problem 04.
• P09_BOUNDARY_PROJECT projects exterior points to the boundary in problem 09.
• P09_BOUNDARY_SEGMENT returns a boundary segment in problem 09.
• P09_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 09.
• P09_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 09.
• P09_BOX returns a bounding box for problem 09.
• P09_DENSITY returns the density for problem 09.
• P09_ELEMENT_SIZE returns a typical element size for problem 09.
• P09_FIXED_NUM returns the number of fixed points in problem 09.
• P09_FIXED_POINTS returns the fixed points in problem 09.
• P09_HOLE_NUM counts the holes in problem 09.
• P09_HOLE_POINT returns a point inside a given hole in problem 9.
• P09_INSIDE reports if a point is inside the region in problem 09.
• P09_SAMPLE samples points from the region in problem 09.
• P09_SAMPLE_H1 samples points from the enlarged region in problem 09.
• P09_SDIST returns the signed distance to the region in problem 09.
• P09_TITLE returns a title for problem 09.
• P10_BOUNDARY_NEAREST returns a nearest boundary point in problem 10.
• P10_BOUNDARY_PROJECT projects exterior points to the boundary in problem 10.
• P10_BOUNDARY_SEGMENT returns a boundary segment in problem 10.
• P10_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 10.
• P10_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 10.
• P10_BOX returns a bounding box for problem 10.
• P10_DENSITY returns the density for problem 10.
• P10_ELEMENT_SIZE returns a typical element size for problem 10.
• P10_FIXED_NUM returns the number of fixed points in problem 10.
• P10_FIXED_POINTS returns the fixed points in problem 10.
• P10_HOLE_NUM counts the holes in problem 10.
• P10_HOLE_POINT returns a point inside a given hole in problem 10.
• P10_INSIDE reports if a point is inside the region in problem 10.
• P10_SAMPLE samples points from the region in problem 10.
• P10_SAMPLE_H1 samples points from the enlarged region in problem 10.
• P10_SDIST returns the signed distance to the region in problem 10.
• P10_TITLE returns a title for problem 10.
• P11_BOUNDARY_NEAREST returns a nearest boundary point in problem 11.
• P11_BOUNDARY_PROJECT projects exterior points to the boundary in problem 11.
• P11_BOUNDARY_SEGMENT returns a boundary segment in problem 11.
• P11_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 11.
• P11_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 11.
• P11_BOX returns a bounding box for problem 11.
• P11_DENSITY returns the density for problem 11.
• P11_ELEMENT_SIZE returns a typical element size for problem 11.
• P11_FIXED_NUM returns the number of fixed points in problem 11.
• P11_FIXED_POINTS returns the fixed points in problem 11.
• P11_HOLE_NUM counts the holes in problem 11.
• P11_HOLE_POINT returns a point inside a given hole in problem 11.
• P11_INSIDE reports if a point is inside the region in problem 11.
• P11_SAMPLE samples points from the region in problem 11.
• P11_SAMPLE_H1 samples points from the enlarged region in problem 11.
• P11_SDIST returns the signed distance to the region in problem 11.
• P11_TITLE returns a title for problem 11.
• P12_BOUNDARY_NEAREST returns a nearest boundary point in problem 12.
• P12_BOUNDARY_PROJECT projects exterior points to the boundary in problem 12.
• P12_BOUNDARY_SEGMENT returns a boundary segment in problem 12.
• P12_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 12.
• P12_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 12.
• P12_BOX returns a bounding box for problem 12.
• P12_DENSITY returns the density for problem 12.
• P12_ELEMENT_SIZE returns a typical element size for problem 12.
• P12_FIXED_NUM returns the number of fixed points in problem 12.
• P12_FIXED_POINTS returns the fixed points in problem 12.
• P12_HOLE_NUM counts the holes in problem 12.
• P12_HOLE_POINT returns a point inside a given hole in problem 12.
• P12_INSIDE reports if a point is inside the region in problem 12.
• P12_SAMPLE samples points from the region in problem 12.
• P12_SAMPLE_H1 samples points from the enlarged region in problem 12.
• P12_SDIST returns the signed distance to the region in problem 12.
• P12_TITLE returns a title for problem 12.
• P13_BOUNDARY_NEAREST returns a nearest boundary point in problem 13.
• P13_BOUNDARY_PROJECT projects exterior points to the boundary in problem 13.
• P13_BOUNDARY_SEGMENT returns a boundary segment in problem 13.
• P13_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 13.
• P13_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 13.
• P13_BOX returns a bounding box for problem 13.
• P13_DENSITY returns the density for problem 13.
• P13_ELEMENT_SIZE returns a typical element size for problem 13.
• P13_FIXED_NUM returns the number of fixed points in problem 13.
• P13_FIXED_POINTS returns the fixed points in problem 13.
• P13_HOLE_NUM counts the holes in problem 13.
• P13_HOLE_POINT returns a point inside a given hole in problem 13.
• P13_INSIDE reports if a point is inside the region in problem 13.
• P13_SAMPLE samples points from the region in problem 13.
• P13_SAMPLE_H1 samples points from the enlarged region in problem 13.
• P13_SDIST returns the signed distance to the region in problem 13.
• P13_TITLE returns a title for problem 13.
• P14_BOUNDARY_NEAREST returns a nearest boundary point in problem 14.
• P14_BOUNDARY_PROJECT projects exterior points to the boundary in problem 14.
• P14_BOUNDARY_SEGMENT returns a boundary segment in problem 14.
• P14_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 14.
• P14_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 14.
• P14_BOX returns a bounding box for problem 14.
• P14_DENSITY returns the density for problem 14.
• P14_ELEMENT_SIZE returns a typical element size for problem 14.
• P14_FIXED_NUM returns the number of fixed points in problem 14.
• P14_FIXED_POINTS returns the fixed points in problem 14.
• P14_HOLE_NUM counts the holes in problem 14.
• P14_HOLE_POINT returns a point inside a given hole in problem 14.
• P14_INSIDE reports if a point is inside the region in problem 14.
• P14_SAMPLE samples points from the region in problem 14.
• P14_SAMPLE_H1 samples points from the enlarged region in problem 14.
• P14_SDIST returns the signed distance to the region in problem 14.
• P14_TITLE returns a title for problem 14.
• P15_BOUNDARY_NEAREST returns a nearest boundary point in problem 15.
• P15_BOUNDARY_PROJECT projects exterior points to the boundary in problem 15.
• P15_BOUNDARY_SEGMENT returns a boundary segment in problem 15.
• P15_BOUNDARY_SEGMENT_LENGTH returns boundary segment lengths in problem 15.
• P15_BOUNDARY_SEGMENT_NUM counts the boundary segments in problem 15.
• P15_BOX returns a bounding box for problem 15.
• P15_DENSITY returns the density for problem 15.
• P15_ELEMENT_SIZE returns a typical element size for problem 15.
• P15_FIXED_NUM returns the number of fixed points in problem 15.
• P15_FIXED_POINTS returns the fixed points in problem 15.
• P15_HOLE_NUM counts the holes in problem 15.
• P15_HOLE_POINT returns a point inside a given hole in problem 15.
• P15_INSIDE reports if a point is inside the region in problem 15.
• P15_SAMPLE samples points from the region in problem 15.
• P15_SAMPLE_H1 samples points from the enlarged region in problem 15.
• P15_SDIST returns the signed distance to the region in problem 15.
• P15_TITLE returns a title for problem 15.
• POLY_WRITE writes data to a POLY file.
• POLYGON_CONTAINS_POINT_2D finds if a point is inside a simple polygon in 2D.
• POLYGON_EXPAND_2D expands a polygon in 2D.
• POLYGON_POINT_NEAR_2D computes the nearest point on a polygon in 2D.
• POLYLOOP_ARCLENGTH_ND computes the arclength of points on a polyloop in ND.
• POLYLOOP_LENGTH_ND computes the length of a polyloop in ND.
• POLYLOOP_POINTS_ND computes equally spaced points on a polyloop in ND.
• QUAD_CONTAINS_POINT_2D finds if a point is inside a convex quadrilateral in 2D.
• R8_MODP returns the nonnegative remainder of R8 division.
• R8_UNIFORM_01 returns a unit pseudorandom R8.
• R8MAT_TRANSPOSE_PRINT prints an R8MAT, transposed.
• R8MAT_TRANSPOSE_PRINT_SOME prints some of an R8MAT, transposed.
• R8MAT_UNIFORM_01 returns a unit pseudorandom R8MAT.
• R8POLY2_RROOT returns the real parts of the roots of a quadratic polynomial.
• R8VEC_PRINT prints an R8VEC.
• R8VEC_UNIFORM_01 returns a unit pseudorandom R8VEC.
• S_BLANK_DELETE removes blanks from a string, left justifying the remainder.
• SEGMENT_POINT_NEAR_2D finds the line segment point nearest a point in 2D.
• SIN_DEG returns the sine of an angle given in degrees.
• TIMESTAMP prints the current YMDHMS date as a time stamp.
• TRIANGLE_CONTAINS_POINT_2D finds if a point is inside a triangle in 2D.

You can go up one level to the FORTRAN90 source codes.

Last revised on 23 October 2006.