OperatorsΒΆ

Primal implements geometric operators with unbound functions. Currently, these include the following:

  • clip finds the polygon resulting from a bounding box clipping a triangle.

  • closest_point takes a primitive P and a query point Q and returns the point on P closest to Q.

  • compute_bounding_box finds the bounding box for a given primitive.

  • squared_distance computes the squared distance from a point to another primitive.

  • orientation finds the side of a line segment or triangle where a query point lies.

  • intersect predicate tests if two primitives intersect. Some of the combinations also indicate the point of intersection of a 1D primitive with another primitive.

Note

Most use cases have low dimension, usually 2 or 3. Dimensionality has been generalized to support other values where it does not interfere with the common case, but some operators such as triangle intersection do not support other dimensionality than 2 or 3.

Note

Many of the operations includes a tolerance parameter eps for improved geometric robustness. For example, orientation() considers a point to be on the boundary (OrientationResult::ON_BOUNDARY) when the point is within eps of the plane. This parameter is explicitly exposed in the primal API for some operations (e.g. some versions of intersect()), but not others (e.g. orientation()).