Simulation of simplicity: a technique to cope with degenerate cases in geometric algorithms