Jump to content

Алгоритм Бойера – Ватсона

В вычислительной геометрии алгоритм Бойера-Ватсона — это метод вычисления триангуляции Делоне конечного набора точек в любом количестве измерений . Алгоритм также можно использовать для получения Вороного диаграммы точек , которая представляет собой двойственный граф триангуляции Делоне.

Описание

[ редактировать ]

Алгоритм Бойера-Ватсона является инкрементным алгоритмом . Он работает путем добавления точек по одной к действительной триангуляции Делоне подмножества желаемых точек. После каждой вставки любые треугольники, описанные окружности которых содержат новую точку, удаляются, оставляя звездообразное многоугольное отверстие, которое затем повторно триангулируется с использованием новой точки. Используя связность триангуляции для эффективного поиска треугольников для удаления, алгоритм может выполнять операции O (N log N) для триангуляции N точек, хотя существуют особые вырожденные случаи, когда это доходит до O (N 2 ) . [ 1 ]

Алгоритм иногда называют алгоритмом Бойера или алгоритмом Ватсона . Адриан Бойер и Дэвид Уотсон разработали его одновременно независимо друг от друга, и каждый опубликовал статью по нему в одном и том же выпуске The Computer Journal (см. ниже).

Псевдокод

[ редактировать ]

Следующий псевдокод описывает базовую реализацию алгоритма Бойера-Ватсона. Его временная сложность равна . Эффективность можно повысить несколькими способами. Например, связность треугольников можно использовать для поиска треугольников, содержащих новую точку в описанной окружности, без необходимости проверять все треугольники — таким образом мы можем уменьшить временную сложность до . Предварительное вычисление описанных окружностей может сэкономить время за счет дополнительного использования памяти. А если точки распределены равномерно, сортировка их вдоль кривой Гильберта, заполняющей пространство перед вставкой, также может ускорить определение местоположения точки. [ 2 ]

function BowyerWatson (pointList)
    // pointList is a set of coordinates defining the points to be triangulated
    triangulation := empty triangle mesh data structure
    add super-triangle to triangulation // must be large enough to completely contain all the points in pointList
    for each point in pointList do // add all the points one at a time to the triangulation
        badTriangles := empty set
        for each triangle in triangulation do // first find all the triangles that are no longer valid due to the insertion
            if point is inside circumcircle of triangle
                add triangle to badTriangles
        polygon := empty set
        for each triangle in badTriangles do // find the boundary of the polygonal hole
            for each edge in triangle do
                if edge is not shared by any other triangles in badTriangles
                    add edge to polygon
        for each triangle in badTriangles do // remove them from the data structure
            remove triangle from triangulation
        for each edge in polygon do // re-triangulate the polygonal hole
            newTri := form a triangle from edge to point
            add newTri to triangulation
    for each triangle in triangulation // done inserting points, now clean up
        if triangle contains a vertex from original super-triangle
            remove triangle from triangulation
    return triangulation
  1. ^ Ребай, С. Эффективное создание неструктурированной сетки с помощью триангуляции Делоне и алгоритма Бойера-Ватсона . Журнал вычислительной физики, том 106, выпуск 1, май 1993 г., с. 127.
  2. ^ Лю, Юаньсинь и Джек Снойинк. «Сравнение пяти реализаций 3D-мозаики Делоне». Комбинаторная и вычислительная геометрия 52 (2005): 439–458.

Дальнейшее чтение

[ редактировать ]
  • Бойер, Адриан (1981). «Вычисление мозаики Дирихле» . Вычислить. Дж. 24 (2): 162–166. дои : 10.1093/comjnl/24.2.162 .
  • Уотсон, Дэвид Ф. (1981). «Вычисление n- мерной мозаики Делоне с применением к многогранникам Вороного». Вычислить. Дж. 24 (2): 167–172. дои : 10.1093/comjnl/24.2.167 .
  • Эффективный алгоритм триангуляции, подходящий для моделирования местности. Общие объяснения с примерами исходного кода на нескольких языках.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 16ecbab5e1179420e50807d2ae58af0a__1701251760
URL1:https://arc.ask3.ru/arc/aa/16/0a/16ecbab5e1179420e50807d2ae58af0a.html
Заголовок, (Title) документа по адресу, URL1:
Bowyer–Watson algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)