У меня есть опыт работы с OPENCASCADE и CGAL. Boost Geometry очень ограниченная/простая и не поддерживает поставщиков топологических структур, твердых тел, брешей и т. Д. Цель была совершенно иной, чем остальная. Конечно, его качество выше, чем у любого другого.
Opencascade среди трех наименее предпочтительных вариантов с точки зрения качества. Например, все определено в глобальном пространстве имен, в заголовочных файлах есть несколько макроопределений и раздутые классы. Он имеет определенную поддержку для различных алгоритмов и конструкций, но только до некоторой точки; для остальных вам придется заплатить. Это как-то понятно, так как оно было разработано как внутренняя библиотека, не предназначенная для публичного доступа, и поэтому они не заботились о таких вещах. Сообщество довольно мало, поэтому вам придется много искать документацию и экспериментировать с тем, как это делать. Как правило, существует более одного способа работы, и обычно приходится писать много адаптеров в вашем коде для взаимодействия между различными алгоритмами.
С другой стороны, CGAL - это совершенно противоположное решение, которое поддерживает почти все, что вы можете себе представить, оно довольно современно, и существует целая община, а также очень хорошая документация и примеры для большинства случаев использования. Существуют разные классы и алгоритмы, зависящие от компромисса проблемы. Существует поддержка различных пользовательских интерфейсов (WIN/QT), которые хорошо взаимодействуют с структурами контейнеров STL/BOOST. Сравнивая с opencascade, который даже не имеет подходящего STL-совместимого класса итератора, это существенная разница.
Поэтому я настоятельно рекомендую работать с CGAL.
В случае, если вы вынуждены работать с OPENCASCADE и хотите одновременно использовать CGAL, вам, вероятно, придется включать заголовочные файлы, чтобы макрос Handle не был определен, например.
#include <TopoDS_Shape.h>
#undef Handle
#include <CGAL/Alpha_shape_3.h>
#define Handle(ClassName) Handle_##ClassName