pub fn orient2d_any(
a: &ImplicitPoint,
b: &ImplicitPoint,
c: &ImplicitPoint,
axis: DropAxis,
) -> SignExpand description
orient2d over ANY mix of explicit/implicit points in ANY argument position
(the predicate the re-triangulation’s point location needs). orient2d is
antisymmetric, so we canonicalise the args to implicit-first (stable, to keep
it a pure function), dispatch to the 0I/1I/2I/3I config, and flip the result
once per transposition (the permutation parity).