A new algorithm for shortest paths among obstacles in the plane