Function LoopRelation.aCrossingTarget

Optionally, a_target() and b_target() can specify an early-exit condition for the loop relation. If any point P is found such that

int aCrossingTarget() const;

A.Contains(P) == a_crossing_target() && B.Contains(P) == b_crossing_target()

then the loop relation is assumed to be the same as if a pair of crossing edges were found. For example, the Contains() relation has

a_crossing_target() == 0 b_crossing_target() == 1

because if A.Contains(P) == 0 (false) and B.Contains(P) == 1 (true) for any point P, then it is equivalent to finding an edge crossing (i.e., since Contains() returns false in both cases).

Loop relations that do not have an early-exit condition of this form should return -1 for both crossing targets.