Optimization: 1. The TransverseCurve constructor constantly threw which created a lot of overhead. Now it does not throw, and we check the requirements before passing arguments to the constructor.
2. The ArcsAroundDivpoints class stored lots of vectors of size 2. Even in the simplest case it contained 12 vectors of size 2 which is really malloc and free intensive. I reimplemented the class so that it uses two long vectors instead. It also made the implementation clearer.