Повторяющиеся края не удаляются в конструкции треугольника Делоне

Я пытаюсь реализовать триангуляцию Делоне. Однако у меня, похоже, проблема с краями, создающими перекрывающиеся треугольники:

Я основываю свою реализацию, как описано на этом сайте. Я просто использую петлю грубой силы, чтобы проверить, существует ли ребро в наборе.

v = vertex to be added
edgeBuffer = [];
for each triangle
    if v is in the triangle's circumscribed circle
        for each edge in the triangle
            check if it's already in edgeBuffer
            if not, add it
        remove triangle

Я подозреваю, что это еще одна часть моего алгоритма, которая идет не так и вызывает это, но я реализовал все довольно просто. Что не так с этим кодом? скрипка

1 ответ

Решение

Если ребро уже существует в буфере ребер, и это не первый треугольник после супер треугольника, его необходимо удалить из буфера ребер, а не пропустить цикл. Вершины этого ребра нужны для нового вычисления. Просто вставьте вершины в другой буфер или удалите ребро из буфера ребер.

Другие вопросы по тегам