
Hello
The midterm evaluations are near due, so here's a public update on my GSoC project.
The schedule this year was very bad for me, and dealing with university stuff ate most of my time in the first half of the project, so I didn't do nearly as much as I hoped for. I have however made a prototype CGAL-based implementation of boolops. It is available in 2Geom trunk; you have to have CGAL installed, its headers available in your default include path, and set the CMake option CGAL_TOYS=ON to compile it. Saying "sudo apt-get install libcgal-dev" suffices to satisfy the first two requirements on Ubuntu 14.04.
The results of playing with this toy are rather disappointing. CGAL produces visibly imprecise results even for simple shapes (see attached pictures), and for some inputs (e.g. when sliding two bananas over each other so that they nearly match) it crashes with an assertion. It seems that its boolean operation algorithm for Beziers is of very poor quality. This means I will have to write the boolops code from scratch.
I've found a MIT-licensed Objective-C library that implements boolops on Bezier paths, which may serve as an inspiration. https://bitbucket.org/andyfinnell/vectorboolean
During the remaining time before midterm, I'll work on path-related APIs in 2Geom. This will be useful when implementing boolops, and will allow us to get rid of ugly ancient stuff in Inkscape, such as SPCurve. After the midterm, I will have to complete a final assignment at the university, and should have much more time to get useful work done in the second half of the project.
Regards, Krzysztof