Containment queries for circles and spheres.

Containment queries for ellipses. The ContEllipse2 class uses a
minimization algorithm in 5 dimensions to determine, center,
orientation, and extents. The ContEllipse2MinCR class is a minimization
algorithm in 2 dimensions, where the center and orientation of the
ellipse are specified.

Containment queries for ellipsoids. The ContEllipsoid3 class uses a
minimization algorithm in 9 dimensions to determine, center,
orientation, and extents. The ContEllipsoid3MinCR class is a
minimization algorithm in 3 dimensions, where the center and orientation
of the ellipsoid are specified.

Containment queries for aligned or oriented boxes in 2D or 3D. The query
template <typename Real>
bool GetContainer(int numPoints, Vector2<Real> const* points, OrientedBox2<Real>& box);
computes the rectangle using the mean of the points as the center and
the eigenvectors of the covariance matrix of the points as the rectangle axis
directions. It generates an oriented rectangle that contains the points
but is not generally the minimumarea rectangle containing
the points. The minimumarea rectangle is more complicated to compute
(robustly); see the PDF mentioned in the following list and the associated
source code for computing the minimumarea rectangle. The query
template <typename Real>
bool GetContainer(int numPoints, Vector3<Real> const* points, OrientedBox3<Real>& box);
computes the box using the mean of the points as the center and
the eigenvectors of the covariance matrix of the points as the box axis
directions. It generates an oriented box that contains the points
but is not generally the minimumvolume box containing
the points. The minimumvolume box is more complicated to compute
(robustly) and uses the 2D minimumarea rectangle algorithm for
subproblems that occur. Source code for the minimumvolume box query is
available. We are currently writing the PDF document that describes the
algorithm and will post is when finished. The minimumarea rectangle code
performance was greatly improved (nearly twice as fast as the previous
version). The minimumvolume box code will be modified as well to obtain
a performance increase.

Containment queries for cylinders, capsules or lozenges.

Pointincone query for cones in any dimension 2 or larger.

Pointinpolygon and pointinpolyhedron queries.

Inscribed and circumscribed circles in 2D or 3D. Inscribed and
circumscribed spheres in 3D.
