2017-01-04 16 views
0

моя программа включает в себя увеличение количества объектов «n», каждый объект имеет пользовательскую форму и координаты. Чтобы обнаружить столкновение для каждого объекта, я проверю расстояние между ним и всеми другими объектами, чтобы проверить, достаточно ли он для столкновения. однако это слишком усложняло бы сложность n^(n-1). Что было бы лучшим алгоритмом обнаружения столкновений для: -простых 2D-объектов, таких как круги и треугольники? -костюм объекта, сделанный вершинами и PShape?лучший алгоритм обнаружения столкновений в обработке java 3 (2D)?

+2

Вы посмотрели [Box2D] (https://github.com/erincatto/Box2D)? – teppic

ответ

1

Короткий ответ: разделите пространство в пространстве на пробелы, а затем проверьте объекты, находящиеся в одном и том же пространстве. Подумайте об этом так: если у вас есть объект, который находится в верхнем левом углу, вам не нужно проверять его на объекты в правом нижнем углу. Просто другие объекты в верхнем левом углу.

Есть много способов реализовать это. Одним из наиболее распространенных подходов является структура данных, называемая quadtree.

Другим подходом было бы использование библиотеки физики, которая выполняет все обнаружение столкновения для вас.

Вышеуказанные два подхода могут быть излишними, если вы просто делаете что-то простое, так что это полностью зависит от вас.