![]() |
Pangolin
Header-only C++20 plane computational geometry library
|
Exact low-level orientation and incircle predicates. More...
Go to the source code of this file.
Namespaces | |
| namespace | pgl |
Functions | |
| template<class ANumber, class ALabel, class BNumber, class BLabel, class CNumber, class CLabel> | |
| constexpr auto | pgl::orientationDeterminant (const Point< ANumber, ALabel > &a, const Point< BNumber, BLabel > &b, const Point< CNumber, CLabel > &c) |
| Returns the signed orientation determinant of three points. | |
| template<class ANumber, class ALabel, class BNumber, class BLabel, class CNumber, class CLabel> | |
| constexpr std::partial_ordering | pgl::orientationSign (const Point< ANumber, ALabel > &a, const Point< BNumber, BLabel > &b, const Point< CNumber, CLabel > &c) |
| Classifies the orientation of three points. | |
| template<class UNumber, class ULabel, class VNumber, class VLabel> | |
| constexpr std::partial_ordering | pgl::crossSign (const Point< UNumber, ULabel > &u, const Point< VNumber, VLabel > &v) |
| Classifies the turn from one vector to another. | |
| template<class ANumber, class ALabel, class BNumber, class BLabel, class PNumber, class PLabel, class QNumber, class QLabel> | |
| constexpr std::partial_ordering | pgl::crossSign (const Point< ANumber, ALabel > &a, const Point< BNumber, BLabel > &b, const Point< PNumber, PLabel > &p, const Point< QNumber, QLabel > &q) |
| Classifies the turn from the direction a -> b to the direction p -> q. | |
| template<class ANumber, class ALabel, class BNumber, class BLabel, class CNumber, class CLabel> | |
| constexpr bool | pgl::collinear (const Point< ANumber, ALabel > &a, const Point< BNumber, BLabel > &b, const Point< CNumber, CLabel > &c) |
| Tests whether three points are collinear. | |
| template<class ANumber, class ALabel, class BNumber, class BLabel> | |
| constexpr bool | pgl::sameDirection (const Point< ANumber, ALabel > &a1, const Point< ANumber, ALabel > &a2, const Point< BNumber, BLabel > &b1, const Point< BNumber, BLabel > &b2) |
| Tests whether the directions a1 -> a2 and b1 -> b2 are parallel. | |
| template<class ANumber, class ALabel, class BNumber, class BLabel> | |
| constexpr std::partial_ordering | pgl::dotSign (const Point< ANumber, ALabel > &a, const Point< BNumber, BLabel > &b) |
| Tells if the angle between two vectors is acute, right, or obtuse. | |
| template<class ANumber, class ALabel, class BNumber, class BLabel, class PNumber, class PLabel, class QNumber, class QLabel> | |
| constexpr std::partial_ordering | pgl::dotSign (const Point< ANumber, ALabel > &a, const Point< BNumber, BLabel > &b, const Point< PNumber, PLabel > &p, const Point< QNumber, QLabel > &q) |
| Tells if the angle between the directions a -> b and p -> q is acute, right, or obtuse. | |
| template<class ANumber, class ALabel, class BNumber, class BLabel, class CNumber, class CLabel, class DNumber, class DLabel> | |
| constexpr auto | pgl::inCircleDeterminant (const Point< ANumber, ALabel > &a, const Point< BNumber, BLabel > &b, const Point< CNumber, CLabel > &c, const Point< DNumber, DLabel > &d) |
| Returns the signed in-circle determinant of a query point. | |
| template<class ANumber, class ALabel, class BNumber, class BLabel, class CNumber, class CLabel, class DNumber, class DLabel> | |
| constexpr std::partial_ordering | pgl::inCircleSign (const Point< ANumber, ALabel > &a, const Point< BNumber, BLabel > &b, const Point< CNumber, CLabel > &c, const Point< DNumber, DLabel > &d) |
| Classifies a point with respect to the circumcircle of three others. | |
Exact low-level orientation and incircle predicates.
These are the primitive signed tests that the rest of the library builds on for collinearity, side tests, and robust ordering decisions.