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

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

**quadrilateral** is available in
a MATLAB version and
an Octave version.

ellipse, an Octave 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, an Octave 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, an Octave 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, an Octave 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.

random_data, an Octave 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, polygon, simplex, tetrahedron and triangle.

tetrahedron, an Octave 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.

triangulate, an Octave code which triangulates a possibly nonconvex polygon, based on a C code by Joseph ORourke.

- angle_rad.m, returns the angle between two rays;
- convex_hull.m, computes the convex hull of a set of points in 2D;
- i4_wrap.m, forces an integer to lie in a given range;
- line_exp_point_dist_signed.m, returns the signed distance from a point to an explicit line;
- parallelogram_area.m, computes the area of a parallelogram;
- parallelogram_area_3d.m, computes the area of a parallelogram in 3D;
- polygon_angles.m, computes the angles of a polygon;
- quadrilateral_angles.m, returns the angles of a quadrilateral;
- quadrilateral_area.m, returns the area of a quadrilateral;
- quadrilateral_area2.m, returns the area of a quadrilateral;
- quadrilateral_area_3d.m, returns the area of a quadrilateral in 3D;
- quadrilateral_contains_point.m, finds if a point is inside a convex quadrilateral;
- quadrilateral_is_convex.m, returns TRUE if a quadrilateral is convex.
- quadrilateral_is_simple.m, is TRUE is a quadrilateral is "simple", that is, non-degenerate;
- quadrilateral_perimeter.m, computes the length of the perimeter of a quadrilateral;
- quadrilateral_point_dist.m, finds the distance from a point to a quadrilateral;
- quadrilateral_point_dist_signed.m, finds the signed distance from a point to a quadrilateral;
- quadrilateral_point_near_2d.m, finds the nearest point on a quadrilateral in 2D;
- quadrilateral_random.m, returns a random quadrilateral;
- quadrilateral_random_convex.m, returns a random convex quadrilateral.
- quadrilateral_random_simple.m, returns a random simple quadrilateral;
- segment_point_dist.m, computes the distance between a point and a line segment;
- segment_point_near.m, returns the nearest line segment point to a point;
- triangle_area.m, returns the area of a triangle;
- triangle_area_3d.m, returns the area of a triangle in 3D;