Научная статья на тему 'Алгоритмы обнаружения коллизий плоских двумерных объектов произвольной формы'

Алгоритмы обнаружения коллизий плоских двумерных объектов произвольной формы Текст научной статьи по специальности «Математика»

CC BY
1992
235
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
АЛГОРИТМ ОБНАРУЖЕНИЯ КОЛЛИЗИЙ / ПЛОСКИЕ ДВУМЕРНЫЕ ОБЪЕКТЫ / НЕВЫПУКЛЫЕ КОНТУРЫ / ВЫПУКЛАЯ ДЕКОМПОЗИЦИЯ / АЛГОРИТМ GJK/EPA / СУММА МИНКОВСКОГО / ТЕОРЕМА О РАЗДЕЛЯЮЩИХ ОСЯХ / COLLISION DETECTION ALGORITHM / FLAT TWO-DIMENSIONAL OBJECTS / NON-CONVEX CONTOURS / CONVEX DECOMPOSITION / ALGORITHM GJK / EPA / MINKOWSKI SUM / SEPARATING AXIS THEOREM

Аннотация научной статьи по математике, автор научной работы — Файзрахманов Р.А., Мурзакаев Р.Т., Швецов М.Д., Мехоношин А.С., Хабибулин А.Ф.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Файзрахманов Р.А., Мурзакаев Р.Т., Швецов М.Д., Мехоношин А.С., Хабибулин А.Ф.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Collision detection algorithms flat two-dimensional objects of arbitrary shape

The paper lists the most common methods for detection of intersections and an algorithm for resolving conflicts of flat two-dimensional objects with complex non-convex shapes. The developed algorithm is characterized by the absence of a convex decomposition of non-convex objects. Examples collision resolution two non-convex objects. The estimation of the average time of resolution of conflicts. The efficiency of the algorithm, which works in more than three times faster than considered unique.

Текст научной работы на тему «Алгоритмы обнаружения коллизий плоских двумерных объектов произвольной формы»

Алгоритмы обнаружения коллизий плоских двумерных объектов

произвольной формы

Р.А. Файзрахманов, Р. Т. Мурзакаев, М.Д. Швецов, А. С. Мехоношин,

А. Ф. Хабибулин

Пермский национальный исследовательский политехнический университет

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

Ключевые слова: алгоритм обнаружения коллизий, плоские двумерные объекты, невыпуклые контуры, выпуклая декомпозиция, алгоритм ОЖ/ЕРА, сумма Минковского, теорема о разделяющих осях.

Задача обнаружения и разрешения коллизий (пересечений объектов) возникает во множестве прикладных областей, таких как САПР, моделирование, физические движки, разработка тренажеров и др. [1-5].

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

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

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

возникает задача устранения проникновения или иной реакции на это событие.

Перечислим наиболее распространенные методы обнаружения пересечений плоских двумерных объектов.

1. Набор инструментов «XNA Game Studio». Все объекты описываются ограничивающими прямоугольниками, и проверяются их пересечением [6], что негативно сказывается на точности определения коллизий.

2. Связка алгоритмов GJK (Gilbert-Johnson-Keerthi algorithm) и EPA (Expanding Polytope Algorithm), которая использует понятие суммы Минковского [7-9]. Тела пересекаются, когда их сумма Минковского содержит начало координат, т.е. нулевой вектор.

3. Метод, основанный на теореме о разделяющих осях (ТРО), согласно которой пара тел не пересекается, если для них существует хотя бы одна разделяющая ось, на которой проекции тел не пересекаются [10].

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

Невыпуклые многоугольники необходимо разбить на выпуклые (рис. 1), чтобы производить обработку столкновений для каждой выпуклой части [12]. Применение выпуклой декомпозиции для методов ТРО и GJK/EPA хорошо работает только при небольших пересечениях.

Рис. 1. - Разбиение вогнутого многоугольника на несколько выпуклых

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

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

Разработанный алгоритм для объектов произвольной формы состоит из следующих шагов:

1. Для каждого полигона PА и PВ строим грани по заданным координатам точек фигур:

Если (7 + 1 > п + 1) Е — р[1] — р[(\, £ = 1...П Иначе Е — р[1 + 1] — р[(\, £ = 1 ...п,

где i - номер точки, принимающий значение от 1 до п (п - количество точек полигона);

p[i] - точка фигуры с координатами x и у, для которой строим грани;

E - текущая грань.

2. Подсчитываем общее количество граней рассматриваемых объектов (к — 1...т, m - общее количество граней).

3. Берем грань с номером 1 (к — 1).

4. Строим разделяющую ось перпендикулярную к текущей грани E[k]:

А = (-У,Х),

где A - разделяющая ось для грани E[k]^;

Y - координата по у грани E[k], которая используется в качестве координаты x разделяющей оси А с отрицательным знаком;

X - координата по x грани E[k], которая используется в качестве координаты у разделяющей оси А.

5. Нормируем длину полученной разделяющей оси А:

L = ^X*X + Y*Y X

X = L Y

где Ь - длинна разделяющей оси А; Х - координаты по х разделяющей оси А; У - координаты по у разделяющей оси А.

6. Получаем минимум и максимум проекции полигонов РА и РВ на разделяющую ось А, для этого накладываем проекции фигур на данную разделяющую ось:

1) вычисляем скалярное произведение между первой точкой объекта и разделяющей осью А:

где s - скалярное произведение между текущей точкой полигона и разделяющей осью А;

p[1].X, p[1].Y - координаты по х и у текущей точки объекта; A.X, A.Y - координаты по х и у разделяющей оси А; min, max - минимальное и максимальное значение проекции полигона на разделяющую ось А.

2) вычисляем скалярное произведение между остальными точками объекта и разделяющей осью А, если полученное значение s будет меньше текущего минимума или больше текущего максимума, то переменной min и max присваиваем новые значения:

s = p[1].X*A.X + p[1\.Y*A.Y

min — s

max — s,

s = p[i].X * A.X + p[i].Y * A.Y,i = 2...n Если (s < min) min — s

Иначе Если (s > max) max — s

7. Вычисляем расстояние между проекциями полигонов РА и PB, с помощью переменных minA, maxA, minB, maxB:

Если (minA < minB) I — minB — maxA Иначе I — minA — maxB,

где I - дистанция между проекциями объектов А и В.

8. Если расстояние I между проекциями больше нуля, значит, полигоны не пересекаются, переходим на шаг 16, иначе на шаг 9.

9. Если текущая грань принадлежит объекту РА и данный объект является невыпуклым, то вычисляем расстояние между проекциями объекта PB и текущей грани Е[к] на разделяющую ось А, иначе переходим на шаг 11:

1) в качестве минимума и максимума проекции грани Е[к] возьмем следующие значения:

min = p[k].X*A.X + p[k].Y*A.Y,k = 1 ...п

max = р[к].Х * А.Х + p[k].Y * A.Y,k = 1 ...п,

где p[k].X, p[k].Y - координаты по осям х и у точки полигона РА (к совпадает с номером текущей грани объекта РА).

2) вычисляем расстояние между проекциями объекта PB и гранью:

Е[к]: Если (min < minB) I — minB — max,

Иначе I — min — maxB

3) если расстояние I между проекциями больше нуля, значит, полигон PB и грань Е[к] не пересекаются, в этом случае, если текущая грань является последней из общего количества граней объектов РА, переходим на шаг 10, иначе переходим к следующей грани (к + 1) на шаг 4; если I <0 (есть пересечение) переходим на шаг 11.

10. Если ни одна из граней полигона РА (объект РА является невыпуклым) не пересекается с полигоном PB, то полигоны точно не пересекаются, переходим на шаг 16, иначе на шаг 11.

11. Проверяем, является ли вычисленное расстояние I для текущей разделяющей оси А минимальным по сравнению со значениями, полученными на других возможных разделяющих осях объектов РА и PB:

Если (/<D) D = I; V — А,

где D - минимальное расстояние между проекциями полигонов по умолчанию D — +оо;

V - вектор, равный разделяющей оси, на которой наложение проекций полигонов минимально.

12. Если текущая грань является последней из общего количества граней объектов РА и PB, то переходим на шаг 13, иначе переходим к следующей грани (к + 1) на шаг 4.

13. Получаем вектор перемещения, необходимый для вывода объектов А и В из состояния пересечения:

V = V*D

14. Определяем знак вектора перемещения:

С = CPA - СРВ Если(С.Х*7.Х + C.Y*V.Y< 0) V = -V,

где СА„ СВ - координаты центров объектов РА и PB;

С - разница между центрами объектов;

С.Х, C.Y - координаты по осям х и у переменной С.

V.X, V.Y - координаты по осям х и у вектора перемещения V.

15. Смещаем полигон РА на полученный вектор перемещения V для вывода объектов из состояния пересечения.

16. Конец.

И

Было проведено тестирование работы алгоритма на нескольких наборах невыпуклых объектов. На рис. 2 представлен пример разрешения коллизий двух невыпуклых объектов разработанным алгоритмом.

Рис. 2. - Пример разрешения коллизий двух невыпуклых объектов

Предложенный алгоритм, алгоритмы «ТРО» и GJK/EPA были протестированы на одинаковых наборах невыпуклых объектов в идентичных условиях (результаты представлены на рис. 3).

Рис. 3. - Среднее время разрешения коллизий (мсек)

Как видно из гистограммы, предложенный алгоритм работает в 4 раза быстрее алгоритма «ТРО» и 10 раз быстрее GJK/EPA с выпуклой декомпозицией.

Таким образом, в работе предложен алгоритм, отличающийся отсутствием выпуклой декомпозиции невыпуклых объектов, показана эффективность разработанного алгоритма, который работает в среднем в три - четыре раза быстрее по сравнению с алгоритмом «ТРО», использующего выпуклую декомпозицию, и в восемь - десять раз, чем алгоритм GJK/EPA.

Литература

1. Файзрахманов Р.А., Бакунов Р.Р., Мехоношин А.С. Создание трехмерных моделей для системы визуализации тренажерного комплекса // Вестник Пермского национального исследовательского политехнического университета. Электротехника, информационные технологии, системы управления. - 2012. - № 6. С. 25-30.

2. Файзрахманов Р.А., Мехоношин А.С., Бакунов Р.Р., Федоров А.Б., Бикметов Р.Р. Особенности разработки и реализации мобильных пультов тренажерного комплекса оператора портального крана // Инженерный вестник Дона, 2012, №4 URL: ivdon.ru/magazine/archive/n4p1y2012/1267.

3. Fayzrakhmanov R.A., Murzakaev R. T., Mezentsev A. S., Shilov V. S. Applying the greedy algorithm for reducing the dimensionality of the dynamic programming method in solving the one-dimensional cutting stock problem // Middle-East Journal of Scientific Research. - 2014. - № 19 (3). - pp. 412-416.

4. Fayzrakhmanov R.A., Murzakaev R. T., Mezentsev A. S., Shilov V. S. Application of the Group Decoder for Solving the Orthogonal Materials Cutting Problem // World Applied Sciences Journal. - 2013. - № 28 (10). - pp. 1361-1365.

5. Мурзакаев Р.Т., Шилов В.С., Буркова А.В. Основные методы решения задачи фигурной нерегулярной укладки плоских деталей // Инженерный вестник Дона, 2013, №4 URL: ivdon.ru/magazine/archive/n4y2013/2043.

6. Взаимодействия 2D объектов (столкновения) // URL: xnadev.ru/articles.php?article_id=72 (Дата обращения: 26.09.15).

7. Yalmar Ponce Atencio, Claudio Esperanca и др. [всего 4 автора]. Collision Detection and Response Scheme for Simplified Physically Based Animation // URL: lcg.ufrj.br/Members/esperanc/atencioy_collision.pdf (Date of check: 26.09.15).

8. Карасёв Р.Н. Мера невыпуклости плоских множеств и сумма Минковского URL: rkarasev.ru/common /upload/minkowski_sum_rus.pdf (Дата обращения: 26.09.15).

9. Ермолин Е. Н. Методы определения и разрешения столкновений на полигональных моделях: дис. канд. физико-математических наук: 05.13.18. Новосибирск, 2011. - 155 c.

10. Johnny Huynh. Separating Axis Theorem for Oriented Bounding Boxes // URL: jkh.me/files/tutorials/Separating%20Axis%20Theorem%20for%200riente d%20Bounding%20Boxes.pdf (Date of check: 26.09.15).

11. Мурзакаев Р.Т., Швецов М.Д., Брюханова А.А. Алгоритмы распознавания столкновений // Международная научно-практическая конференция «Тенденции развития точных, естественных и гуманитарных наук - 2014» (сборник статей), Брянск, 21-23 июля 2014. - Брянск, 2014. - С. 3-8.

12. Jyh-Ming Lien, Nancy M. Amato. Approximate Convex Decomposition of Polygons // URL: cs.gmu.edu/~jmlien/research/app-cd/p218-lien.pdf (Date of check: 26.09.15).

References

1. Fayzrakhmanov R.A., Bakunov R.R., Mekhonoshin A.S. Vestnik Permskogo nacional'nogo issledovatel'skogo politehnicheskogo universiteta. Jelektrotehnika, informacionnye tehnologii, sistemy upravlenija. 2012. № 6. pp. 25-30.

2. Fayzrakhmanov R.A., Mekhonoshin A.S., Bakunov R.R., Fedorov A.B., Bikmetov R.R. Inzenernyj vestnik Dona (Rus), 2012, №4 URL: ivdon.ru/magazine/archive/n4p1y2012/1267.

3. Fayzrakhmanov R.A., Murzakaev R. T., Mezentsev A. S., Shilov V. S. Applying the greedy algorithm for reducing the dimensionality of the dynamic programming method in solving the one-dimensional cutting stock problem. RMiddle-East Journal of Scientific Research. 2014. № 19 (3). pp. 412-416.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

4. Fayzrakhmanov R.A., Murzakaev R. T., Mezentsev A. S., Shilov V. S. Application of the Group Decoder for Solving the Orthogonal Materials Cutting Problem. World Applied Sciences Journal. 2013. № 28 (10). pp. 1361-1365.

5. Murzakaev R.T., Shilov V.S., Burkova A.V. Inzenernyj vestnik Dona (Rus), 2013, №4 URL: ivdon.ru/magazine/archive/n4y2013/2043.

6. Vzaimodejstvija 2D obyektov (stolknoveniya) [Interactions 2D objects (collision)]. URL: xnadev.ru/articles.php?article_id=72.

7. Yalmar Ponce Atencio, Claudio Esperanca etc. Collision Detection and Response Scheme for Simplified Physically Based Animation. URL: lcg.ufrj.br/Members/esperanc/atencioy_collision.pdf.

8. Karasjov R. N. Mera nevypuklosti ploskih mnozhestv i summa Minkovskogo [The measure of non-convexity of plane sets and Minkowski sum] URL: rkarasev.ru/common /upload/minkowski_sum_rus.pdf.

9. Ermolin E. N. Metody opredelenija i razreshenija stolknovenij na poligonal'nyh modeljah [Methods for determining and resolving conflicts on polygonal models]: dis. kand. fiziko-matematicheskih nauk: 05.13.18. Novosibirsk, 2011. 155 p.

10. Johnny Huynh. Separating Axis Theorem for Oriented Bounding Boxes. URL: jkh.me/files/tutorials/Separating%20Axis%20Theorem%20for%200riented %20Bounding%20Boxes.pdf.

11. Murzakaev R.T., Shve^v M.D., Bryukhanova A.A. Mezhdunarodnaya nauchno-prakticheskaya konferentsiya «Tendentsii razvitiya tochnykh, estestvennykh i gumanitarnykh nauk - 2014» (sbornik statey), Bryansk, 21-23 iyulya 2014. Bryansk, 2014. pp. 3-8.

12. Jyh-Ming Lien, Nancy M. Amato. Approximate Convex Decomposition of Polygons. URL: cs.gmu.edu/~jmlien/research/app-cd/p218-lien.pdf.

i Надоели баннеры? Вы всегда можете отключить рекламу.