for (int a1 = 0; a1 < numVertices; a1++) {
int a2 = (a1 + 1) % numVertices;
EdgeCrosser crosser = new EdgeCrosser(vertex(a1), vertex(a2), vertex(0));
int previousIndex = -2;
for (it.getCandidates(vertex(a1), vertex(a2)); it.hasNext(); it.next()) {
int b1 = it.index();
int b2 = (b1 + 1) % numVertices;
// If either 'a' index equals either 'b' index, then these two edges
// share a vertex. If a1==b1 then it must be the case that a2==b2, e.g.
// the two edges are the same. In that case, we skip the test, since we
// don't want to test an edge against itself. If a1==b2 or b1==a2 then