Является ли упрощение CGAL Polyline недетерминированным?C++

Программы на C++. Форум разработчиков
Anonymous
Является ли упрощение CGAL Polyline недетерминированным?

Сообщение Anonymous »

Я пытаюсь упростить многие Polygon_with_holes_2, некоторые из которых имеют общие границы. Я заметил, что при запуске следующего фрагмента кода C++ я получаю разные результаты во время разных прогонов (т. е. количество точек после упрощения разное для разных прогонов с одинаковой геометрией).

Код: Выделить всё

CGAL::Constrained_triangulation_plus_2 ct;

// Presume this vector has been filled up with many `Polygon_with_holes_2`
std::vector pwh_vector;

for (const auto &pwh : pwh_vector) {
ct.insert_constraint(pwh.outer_boundary());
for (const auto &h : pwh.holes()) {
ct.insert_constraint(h);
}
}

CGAL::Polyline_simplification_2::simplify(ct, Cost(), Stop(0.5));
Поэтому я хотел проверить: является ли упрощение полилиний CGAL недетерминированным? Я не смог найти никакой информации о недетерминированности упрощения полилиний в руководстве пользователя: https://doc.cgal.org/latest/Polyline_si ... index.html
Одна из причин, по которой я мог подумать, что порядок посещения Constrained_triangulation_plus_2 не определен.
Еще одна возможная причина, о которой я мог бы подумать, если бы были связи в определение приоритета между двумя узлами. Это могло бы объяснить, почему я наблюдаю этот эффект довольно часто для некоторых геометрий и никогда — для других.
Этот недетерминизм существенно усложнил отладку нашей программы. Если этот недетерминизм действительно является функцией по умолчанию упрощения ломаных линий CGAL, есть ли способ отключить его?

Подробнее здесь: https://stackoverflow.com/questions/793 ... erministic

Вернуться в «C++»