Jump to content

Алгоритм расстояния Гилберта – Джонсона – Кирти

Алгоритм расстояния Гилберта-Джонсона-Кирти , Дэниелом В. Джонсоном и С. Сатьей Кирти в 1988 году. В отличие от многих других алгоритмов — это метод определения минимального расстояния между двумя выпуклыми множествами , впервые опубликованный Элмером Г. Гилбертом расстояния, он не требует хранения геометрических данных в каком-либо конкретном формате, а вместо этого полагается исключительно на вспомогательную функцию для итеративного создания симплексов, более близких к правильному ответу, с использованием препятствия конфигурационного пространства (CSO) из двух выпуклых форм, более известного как разница Минковского. .

Алгоритмы «Улучшенный GJK» используют информацию о краях для ускорения работы алгоритма, следуя по краям при поиске следующего симплекса. Это существенно повышает производительность для многогранников с большим количеством вершин.

GJK использует подалгоритм расстояния Джонсона, который в общем случае вычисляет точку тетраэдра, ближайшую к началу координат, но, как известно, страдает от проблем с численной устойчивостью. В 2017 году Монтанари, Петринич и Барбьери предложили новый подалгоритм, основанный на знаковых объемах, который позволяет избежать умножения потенциально небольших количеств и обеспечивает ускорение от 15% до 30%.

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

Стабильность, скорость и небольшой объем памяти алгоритма делают его популярным для обнаружения столкновений в реальном времени , особенно в физических движках для видеоигр .

GJK выполняет две функции:

  • , который возвращает точку на фигуре , имеющую наибольшее скалярное произведение с .
  • , который принимает симплекс s и возвращает симплекс s, ближайший к началу координат, а также направление к началу координат, нормальное к новому симплексу. Если s само содержит начало координат, NearestSimplex принимает s , и две фигуры определяются как пересекающиеся.

Каждый симплекс, обрабатываемый NearestSimplex , может быть любым симплексным подпространством R. н . Например, в 3D это могут быть точка, отрезок, треугольник или тетраэдр ; каждый определяется 1, 2, 3 или 4 баллами соответственно.

Псевдокод

[ редактировать ]
function GJK_intersection(shape p, shape q, vector initial_axis):
    vector  A = Support(p, initial_axis) − Support(q, −initial_axis)
    simplex s = {A}
    vector  D = −A

    loop:
        A = Support(p, D) − Support(q, −D)
        if dot(A, D) < 0:
            reject
        s = s ∪ {A}
        s, D, contains_origin := NearestSimplex(s)
        if contains_origin:
            accept

Иллюстрация

[ редактировать ]
Два типа столкновения и соответствующая грань CSO: грань-вершина (вверху) и ребро-ребро (внизу).

См. также

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


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9bffbd00ca18f3d3ad04fecc817b0192__1718711820
URL1:https://arc.ask3.ru/arc/aa/9b/92/9bffbd00ca18f3d3ad04fecc817b0192.html
Заголовок, (Title) документа по адресу, URL1:
Gilbert–Johnson–Keerthi distance algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)