прогнозиране на сблъсък с помощта на сумата на Минковски

Искам да използвам сумата на Минковски, за да предвидя точната точка на сблъсък между две изпъкнали форми. Според моето разбиране точката, в която векторът на скоростта се пресича със сумата на Минковски, е количеството, което трябва да преместя обекта си по вектора, така че те просто да се докоснат (вече знам, че ще се сблъскат). Ето пример за това, което имам предвид (за простота използвах правоъгълници):

въведете описание на изображението тук

Искам да кажа, че мога просто да изчисля пресечната точка с всяка линия на изпъкналата обвивка и просто да използвам най-близката, но това изглежда ужасно неефективно. Идеята ми беше да изчисля симплекса, който е най-близо до вектора, но нямам идея как най-добре да го направя. Намерих алгоритъм, който изчислява най-малкото разстояние между обектите или по-точно най-малкото разстояние от сумата на Минковски до началото (http://www.codezealot.org/archives/153). Една част от алгоритъма се опитва да намери симплекса, който е най-близък до произхода, което е нещо, което искам да направя. Опитах се да го променя според моите нужди, но не успях. За мен звучи така, сякаш трябва да има много просто решение, но не съм толкова добър с векторната математика.

Надявам се да изясня проблема си, тъй като английският ми не е толкова добър :D


person user1566228    schedule 12.07.2013    source източник
comment
А, не съм опитвал този проблем от известно време. Проблемът с намирането на най-близкия симплекс е, че той не взема предвид вектора на движение. Решението, което се опитвам да използвам, е да изчисля пресечната точка между лъч (описващ движението) и сумата на Минковски (която, тъй като е изпъкнала обвивка, може да бъде представена чрез пресечната точка на полупространства - тогава проблемът е изчисляване на тези полупространства).   -  person Drew McGowen    schedule 13.07.2013
comment
Хммм изглежда има още нещо, което трябва да прочета :D   -  person user1566228    schedule 13.07.2013


Отговори (1)


Можете да трансформирате проблема, както следва:

1) завъртете равнината така, че векторът на скоростта да стане хоризонтален

2) разгледайте частите от очертанията на многоъгълника, обърнати един към друг (това са две изпъкнали полилинии); сега трябва да намерите най-късото хоризонтално разстояние между тези две полилинии

3) през всеки връх на една от полилиниите начертайте хоризонтална линия; това ще раздели равнината на набор от хоризонтални резени

4) трансформирайте всеки срез, като използвате трансформация на срязване, която поставя двата дефиниращи го върха върху оста Y чрез хоризонтални движения; тази трансформация запазва хоризонталните разстояния

5) докато първата полилиния се трансформира в права линия (ост Y), другата полилиния се трансформира в друга полилиния; намерете върховете, които са най-близо до оста Y. Това ви дава дължината на вектора на сблъсък.

Като страничен продукт, стъпка 2) ще ви каже дали многоъгълниците наистина се сблъскват, дали диапазоните на стойностите на Y се припокриват.

person Yves Daoust    schedule 16.07.2013