Я немного упростил этот пример из онлайн-руководства CGAL - см. Ниже:
#include <CGAL/Exact_integer.h>
#include <CGAL/Filtered_extended_homogeneous.h>
#include <CGAL/Nef_polyhedron_2.h>
using Kernel = CGAL::Filtered_extended_homogeneous<CGAL::Exact_integer>;
using Polyhedron = CGAL::Nef_polyhedron_2<Kernel>;
using Line = Polyhedron::Line;
int main()
{
Line l(2, 4, 2);
}
Эту программу можно скомпилировать и выполнить без проблем. Затем я изменил один аргумент для конструктора Line
, чтобы сделать его нецелым числом:
Line l(2, 4, 2.5);
Мой компилятор отказался его компилировать:
/home/hekto/EX/test.cpp: In function ‘int main()’:
/home/hekto/EX/test.cpp:21:19: error: no matching function for call to ‘CGAL::Line_2<CGAL::Homogeneous<boost::multiprecision::number<boost::multiprecision::backends::gmp_int>, CGAL::Quotient<boost::multiprecision::number<boost::multiprecision::backends::gmp_int> > > >::Line_2(int, int, double)’
Line l(2, 4, 2.5);
^
... и много других сообщений.
Также я пытался заменить тип Exact_integer
типом MP_Float
. Конструктор Line
был скомпилирован нормально, но конструктор Polyhedron
выдал мне длинный список ошибок. Источник ниже:
#include <CGAL/MP_Float.h>
#include <CGAL/Filtered_extended_homogeneous.h>
#include <CGAL/Nef_polyhedron_2.h>
using Kernel = CGAL::Filtered_extended_homogeneous<CGAL::MP_Float>;
using Polyhedron = CGAL::Nef_polyhedron_2<Kernel>;
using Line = Polyhedron::Line;
int main()
{
Line l(2, 4, 2);
Polyhedron p(l);
}
Компилятор пожаловался на несуществующий operator/=
для операндов с типом CGAL::MP_Float
.
Поддерживает ли CGAL числа с плавающей запятой для двумерных многогранников? Если да, то какое ядро выбрать?
- ОС: Ubuntu 18.04.4
- Компилятор: g ++ (Ubuntu 7.5.0-3ubuntu1 ~ 18.04) 7.5.0