**tetrahedron**,
a MATLAB code which
carries out geometric calculations involving a general tetrahedron,
including solid and facial angles, face areas,
point containment, distances to a point, circumsphere and insphere,
measures of shape quality, centroid, barycentric coordinates,
edges and edge lengths, random sampling, and volumes.

The computer code and data files described and made available on this web page are distributed under the MIT license

**tetrahedron** is available in
a C version and
a C++ version and
a Fortran90 version and
a MATLAB version and
a Python version.

ellipse, a MATLAB code which carries out geometric calculations for ellipses and ellipsoids, including area, distance to a point, eccentricity, perimeter, points along the perimeter, random sampling, conversion between standard and quadratic forms.

geometry, a MATLAB code which performs geometric calculations in 2, 3 and M dimensional space, including the computation of angles, areas, containment, distances, intersections, lengths, and volumes.

hypersphere, a MATLAB code which carries out various operations for a D-dimensional hypersphere, including converting between Cartesian and spherical coordinates, stereographic projection, sampling the surface of the sphere, and computing the surface area and volume.

polygon, a MATLAB code which carries out geometric calculations on polygons, including angles, area, centroid, containment of a point, diameter, integrals of monomials, convexity, distance to a point.

quadrilateral, a MATLAB code which carries out geometric calculations on quadrilaterals, including angles, area, distances, nearest point, point containment, perimeter, and random generation.

random_data, a MATLAB code which uses a random number generator (RNG) to sample points corresponding to various probability density functions (PDF), spatial dimensions, and geometries, including the annulus, circle, ellipse, ellipsoid, hypercube, hypersphere, simplex, tetrahedron and triangle.

simplex_coordinates, a MATLAB code which computes the Cartesian coordinates of the vertices of a regular simplex in M dimensions.

stroud, a MATLAB code which defines quadrature rules for a variety of M-dimensional regions, including the interior of the square, cube and hypercube, the pyramid, cone and ellipse, the hexagon, the M-dimensional octahedron, the circle, sphere and hypersphere, the triangle, tetrahedron and simplex, and the surface of the circle, sphere and hypersphere.

tet_mesh, a MATLAB code which carries out various operations on meshes formed from tetrahedrons.

tetrahedron_arbq_rule, a MATLAB code which returns quadrature rules, with exactness up to total degree 15, over the interior of a tetrahedron in 3D, by Hong Xiao and Zydrunas Gimbutas.

tetrahedron_exactness, a MATLAB code which computes the monomial exactness of a quadrature rule over the interior of a tetrahedron in 3D.

tetrahedron_grid, a MATLAB code which computes a grid of points over the interior of a tetrahedron in 3D.

tetrahedron_integrals, a MATLAB code which returns the exact value of the integral of any monomial over the interior of the unit tetrahedron in 3D.

tetrahedron_monte_carlo, a MATLAB code which uses the Monte Carlo method to estimate integrals over the interior of a general tetrahedron in 3D.

tetrahedrons, a dataset directory which contains examples of tetrahedrons;

triangle, a MATLAB code which computes properties, including angles, area, centroid, circumcircle, edge lengths, incircle, orientation, orthocenter, and quality, of a triangle in 2D.

- i4vec_lcm.m, returns the least common multiple of an I4VEC;
- polygon_area_3d.m, computes the area of a polygon in 3D;
- r8vec_angle_3d.m, computes the angle between two vectors in 3D;
- shape_print.m, prints information about a shape;
- tetrahedron_barycentric.m, returns the barycentric coordinates of a point with respect to a tetrahedron;
- tetrahedron_centroid.m, returns the centroid of a tetrahedron;
- tetrahedron_circumsphere.m, returns the circumsphere of a tetrahedron;
- tetrahedron_contains_point.m, is TRUE if a tetrahedron contains a point;
- tetrahedron_dihedral_angles.m, returns the 6 dihedral angles of a tetrahedron;
- tetrahedron_edge_length.m, returns the edge lengths of a tetrahedron;
- tetrahedron_edges.m, returns the edges of a tetrahedron;
- tetrahedron_face_angles.m, returns the 4 sets of 3 face angles of a tetrahedron;
- tetrahedron_face_areas.m, returns the 4 face areas of a tetrahedron;
- tetrahedron_insphere.m, returns the insphere of a tetrahedron;
- tetrahedron_lattice_layer_point_next.m, next tetrahedron lattice layer point;
- tetrahedron_lattice_point_next.m, returns the next tetrahedron lattice point;
- tetrahedron_quality1.m, returns the quality of a tetrahedron;
- tetrahedron_quality2.m, returns the quality of a tetrahedron;
- tetrahedron_quality3.m, returns the quality of a tetrahedron;
- tetrahedron_quality4.m, returns the quality of a tetrahedron;
- tetrahedron_rhombic_shape.m, describes the shape of a rhombic tetrahedron;
- tetrahedron_rhombic_size.m, gives "sizes" for a rhombic tetrahedron;
- tetrahedron_sample.m, returns a random point from a tetrahedron;
- tetrahedron_shape.m, describes the shape of a tetrahedron;
- tetrahedron_size.m, gives "sizes" for a tetrahedron;
- tetrahedron_solid_angles.m, returns the 4 solid angles of a tetrahedron;
- tetrahedron_volume.m, computes the volume of a tetrahedron;
- tetrahedron01_lattice_point_num.m, counts lattice points inside a tetrahedron;
- tetrahedron01_volume.m returns the volume of the unit tetrahedron.
- triangle_angles_3d.m, returns the angles of a triangle in 3D;
- triangle_area_3d.m, returns the area of a triangle in 3D;