Расположение CGAL: сохранение исходных индексов вершинC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Расположение CGAL: сохранение исходных индексов вершин

Сообщение Anonymous »


Изображение

Привет!
Я пытаюсь построить расположение CGAL из набора точек и сегментов и хотел бы сохранить информацию об исходных точках.
У меня есть:
A std::vector
с 6 точками.
Std::vector с 4 сегментами, ссылающимися на точки по индексу: (0,3), (1,5), (1,4), (2,4).
Когда я вставляю эти сегменты в пустой Arrangement_2, CGAL создает новые вершины на пересечениях (давайте назовите их a, b, c), а также исходные.
Я хочу, чтобы вершины в расположении, соответствующие начальным точкам, знали свой исходный индекс (0..5). В идеале это можно было бы сделать с помощью карты свойств или расширения класса Point, но вы можете рассказать мне об этом здесь. Меня не волнуют индексы новых точек пересечения.
Я мог бы сделать это с помощью проверок на равенство или карт после построения, но для больших наборов данных это кажется неэффективным. Вот пример кода без какой-либо ассоциации:
#include
#include
#include

typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
typedef Kernel::Point_2 Point;
typedef Kernel::Segment_2 Segment;
typedef CGAL::Arrangement_2 Arrangement;

int main() {
std::vector points = {
Point(15, 20), // 0
Point(20, 25), // 1
Point(35, 20), // 2
Point(30, 10), // 3
Point(15, 10), // 4
Point(30, 25) // 5
};

std::vector segments = {
Segment(points[0], points[3]), // (0,3)
Segment(points[1], points[5]), // (1,5)
Segment(points[1], points[4]), // (1,4)
Segment(points[2], points[4]) // (2,4)
};

Arrangement arr;
for (const auto& s : segments) {
CGAL::insert(arr, s);
}

// How to associate vertices corresponding to original points with their index?
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... ex-indices
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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