OperatorsΒΆ
Primal implements geometric operators with unbound functions. Currently, these include the following:
clipfinds the polygon resulting from a bounding box clipping a triangle.closest_pointtakes a primitive P and a query point Q and returns the point on P closest to Q.compute_bounding_boxfinds the bounding box for a given primitive.squared_distancecomputes the squared distance from a point to another primitive.orientationfinds the side of a line segment or triangle where a query point lies.intersectpredicate 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()).