This method extends the concept of a "crossing" to the case where AB
and CD have a vertex in common. The two edges may or may not cross,
according to the rules defined in VertexCrossing() below. The rules
are designed so that point containment tests can be implemented simply
by counting edge crossings. Similarly, determining whether one edge
chain crosses another edge chain can be implemented by counting.
Returns true if CrossingSign(c, d) > 0, or AB and CD share a vertex
and VertexCrossing(a, b, c, d) returns true.
The arguments must point to values that persist until the next call.
This method extends the concept of a "crossing" to the case where AB and CD have a vertex in common. The two edges may or may not cross, according to the rules defined in VertexCrossing() below. The rules are designed so that point containment tests can be implemented simply by counting edge crossings. Similarly, determining whether one edge chain crosses another edge chain can be implemented by counting.
Returns true if CrossingSign(c, d) > 0, or AB and CD share a vertex and VertexCrossing(a, b, c, d) returns true.
The arguments must point to values that persist until the next call.