У меня есть набор сегментов (каждый из которых задан двумя точками, 2D) и вы хотите знать для каждого сегмента x, сколько других отрезков y1, ..., yn пересекают x. Как бы вы сделали это эффективно в CGAL?CGAL Newbie Question: Какие сегменты пересекаются?
У меня нет опыта работы с библиотекой CGAL и компьютерной геометкой вообще. Мне просто нужен алгоритм для выполнения упомянутых выше вещей. Поэтому я подумал, что вместо реализации настраиваемой функции было бы лучше/эффективнее использовать эту библиотеку.
Пример CGAL sweep_line.cpp показывает мне, как получить все точки пересечения множества сегментов. Поскольку меня не интересуют точки, мне нужно будет проверить точки и сегменты, чтобы получить количество пересечений для каждого сегмента. Но я не знаю, как это сделать в CGAL. И я также предполагаю, что есть более эффективный способ сделать это; смысл: избегать вычисления точек и итерации по всем сегментам с новой проверкой, если этот пересекает любую найденную точку.
Любые советы? Спасибо за ваш вклад!
Sascha
PS: еще один быстрый вопрос новичка: почему результаты следующих распечатаны с отрицательными знаками?
Segment_2 segments[] = {Segment_2 (Point_2 (1, 5), Point_2 (8, 5)),
Segment_2 (Point_2 (1, 1), Point_2 (8, 8)),
Segment_2 (Point_2 (3, 1), Point_2 (3, 8)),
Segment_2 (Point_2 (8, 5), Point_2 (8, 8))};
std::vector<Point_2> pts;
CGAL::compute_intersection_points (segments, segments + 4,
std::back_inserter (pts));
Найдено точки пересечения 3: -21/-7 -21/-7 -3/-1 -5/-1 -35/-7 -35/-7
PS2 : Я узнал, что мой заголовок в моих первых строках не описывает одну и ту же проблему. Мне не нужно знать, какие сегменты взаимодействуют с х, а только количество сегментов, как описано в тексте.