Я просматривал статью Гибаса-Столфи, в которой описывается четырехугольная структура данных, которая может быть использована для вычисления триангуляций Делоне. Я использую Java для реализации структуры данных QuadEdge.
Я следил за реализацией, упомянутой на этом сайте Структура данных Quad Edge Java .
Короче говоря, структура Quad Edge состоит из 2 операций, а именно:
- makeEdge -> Возвращает Quad Edge для ребра e, присутствующего в подразделении
- splice (a, b) -> Функция, используемая для изменения топологии, связанной с четырехугольными ребрами a и b.
Теперь структура данных Quad Edge состоит из 2 полей, а именно указателя данных и следующего.
Следующее поле рассчитывается по формуле:
e [r] .Next = e (Rot ^ r) Onext.
Для идеи об Onext я прилагаю фигуру из бумаги Гибаса-Столфи
Теперь пример кода устанавливает следующие указатели для всех 4 частей ребра четырехугольника. Они установлены следующим образом 1 ,
q0 = new QuadEdge();
q1 = new QuadEdge();
q2 = new QuadEdge();
q3 = new QuadEdge();
q0.Onext = q0;
q1.Onext = q3; //on the sphere, left=right (How?? or Why??)
q2.Onext = q2;
q3.Onext = q1;
Мой вопрос был таков: если Onext i.e (следующий край против часовой стрелки, имеющий то же начало, что и e), является самим ребром, почему это другой край, когда берется двойной край.
Я мог бы поставить этот вопрос не в том месте. Я прошу прощения за это и любые неудобства, вызванные этим.
Спасибо,
Chaitanya