Gilbert-Jonson-Kerti masofa algoritmi - Gilbert–Johnson–Keerthi distance algorithm

The Gilbert - Jonson - Kerti masofasi algoritm bu ikkalasi orasidagi minimal masofani aniqlash usuli qavariq to'plamlar. Ko'pgina boshqa masofaviy algoritmlardan farqli o'laroq, u geometriya ma'lumotlarini har qanday aniq formatda saqlashni talab qilmaydi, aksincha faqat qo'llab-quvvatlash funktsiyasi iterativ ravishda yaqinroq yaratish sodda yordamida to'g'ri javobga konfiguratsiya maydoni to'sig'i (CSO) ikkita konveks shaklidan iborat bo'lib, odatda Minkovskiy farqi.

"Kengaytirilgan GJK" algoritmlari algoritmni tezlashtirish uchun chekka ma'lumotlardan foydalanib, keyingi oddiy simpleksni qidirishda chekkalarni kuzatib boradi. Bu ko'p sonli cho'qqilarga ega politoplar uchun ishlashni sezilarli darajada yaxshilaydi.

GJK Jonsonning masofa subalgoritmidan foydalanadi, u umumiy holda tetraedrning kelib chiqishiga eng yaqin nuqtasini hisoblaydi, ammo raqamlarning mustahkamligi muammolariga duch keladi. 2017 yilda Montanari, Petrinic va Barbieri imzolangan hajmlarga asoslangan yangi subalgoritmni taklif qildilar, bu potentsial kichik miqdorlarni ko'paytirishni oldini oladi va 15% dan 30% gacha tezlashishga erishadi.

GJK algoritmlari ko'pincha simulyatsiya tizimlarida va video o'yinlarda bosqichma-bosqich qo'llaniladi. Ushbu rejimda avvalgi echimdan olingan yakuniy simpleks keyingi iteratsiya yoki "ramka" da dastlabki taxmin sifatida ishlatiladi. Agar yangi kadrdagi pozitsiyalar eski kadrdagi pozitsiyalarga yaqin bo'lsa, algoritm bir yoki ikkita takrorlashda birlashadi. Bu deyarli doimiy vaqt ichida ishlaydigan to'qnashuvni aniqlash tizimlarini ishlab chiqaradi.

Algoritmning barqarorligi, tezligi va kichik hajmdagi izlari uni real vaqtda mashhur qiladi to'qnashuvni aniqlash, ayniqsa fizika dvigatellari uchun video O'yinlar.

Umumiy nuqtai

GJK ikkita funktsiyaga tayanadi:

  • , bu nuqtani qaytaradi shakli eng yuqori nuqta mahsulotiga ega bo'lgan .
  • , bu oddiylikni oladi s va simpleksni qaytaradi s kelib chiqishiga eng yaqin va yangi simpleksga normal kelib chiqishi yo'nalishi. Agar s o'zi kelib chiqishini o'z ichiga oladi, Simestekka yaqin qabul qiladi s va ikkita shakl kesishishi aniqlangan.

Oddiyliklar tomonidan ko'rib chiqilgan Simestekka yaqin har birining sodda pastki maydoni bo'lishi mumkin Rn. Masalan, 3D formatida ular nuqta, chiziq bo'lagi, uchburchak yoki a bo'lishi mumkin tetraedr; har biri mos ravishda 1, 2, 3 yoki 4 ball bilan belgilanadi.

Psevdokod

funktsiya GJK_intersection (shakl p, shakl q, vektor boshlang'ich_axsis): vektor A = qo'llab-quvvatlash (p, boshlang'ich_axis) - qo'llab-quvvatlash (q, − boshlang'ich_axis) sodda s = {A} vektor D = −A pastadir: A = Qo'llab-quvvatlash (p, D) - qo'llab-quvvatlash (q, -D) agar nuqta (A, D) <0: rad etish s = s ∪ A s, D, o'z ichiga olgan_origin: = NearestSimplex (s) agar contains_origin: qabul qiling

Illyustratsiya

Ikki to'qnashuv turi va mos keladigan fuqarolik jamiyatining yuzi: vertex (tepa) va chekka (pastki).

Shuningdek qarang

Tashqi havolalar