Как добавить толерантность к моему треугольнику кал? - PullRequest
0 голосов
/ 21 января 2019

Я использую метод пересечения cgal, чтобы найти пересечение между линией и треугольником.

double tolerance = 1e-6; 
auto result = intersection(segment1, triangle1); 

Теперь я хочу добавить допуск в треугольнике (аналогично расширению треугольника заданной величиной допуска).

Итак, как мне добавить толерантность в мой треугольник1?

ps: я видел, что Bbox_3.h имеет функцию dialte.

Обновление:

Раньше у меня было

typedef CGAL::Simple_cartesian<double> IK;

IK::Triangle_3 first_triangle(IK::Point_3(0, 0, 0), IK::Point_3(2, 0, 0),
                                IK::Point_3(1, 1, 0));

Теперь я сделал это:

typedef CGAL::Simple_cartesian<CGAL::Interval_nt<false>> IK;

IK::Triangle_3 first_triangle(IK::Point_3(0, 0, 0), IK::Point_3(2, 0, 0),
                                    IK::Point_3(1, 1, 0));

Я до сих пор не могу понять, как добавить интервал (моя терпимость) к этим точкам.Было бы здорово, если бы был какой-то пример по этому поводу.

1 Ответ

0 голосов
/ 22 января 2019

В CGAL нет такого допуска. Что вы можете сделать, так это использовать ядро ​​с интервалами (say CGAL::Simple_cartesian<CGAL::Interval_nt<> >) и иметь координаты точек ваших треугольников, являющихся интервалами, а не одним значением. Затем все предикаты с возвращаемыми Uncertain объектами, которые можно запрашивать с помощью бесплатных функций (например, is_certain()). На этой странице также есть псевдокод .

...