У меня есть этот NSMutableArray, который представляет собой коллекцию объектов, которые перемещаются на экране. Когда объект пересекает другой, мне нужно построить массив с этим объектом, пересеченным. Если этот объект сам по себе пересекается с другим, этот должен быть включен в этот массив и так далее, рекурсивно, пока я не узнаю все объекты, пересекающиеся с объектом, который пересекается с другим и так далее.iPhone - пересечение прямоугольников
Пример: Я перемещаю объект1 и пересекаю объект2, но object2 пересекает объект3, который пересекает 4, который пересекает 5 и т. Д.
Я хочу собрать все эти объекты в одном массиве.
То, что я сделал это:
NSMutableArray *intersectingObjects = [NSMutableArray array];
for (Obj *oneObj in allObjects) {
if (oneObj != movingObject) {
if (CGRectIntersectsRect(movingObject.frame, oneObj)) {
[intersectingObjects addObject:oneObj];
}
}
}
// at this point I got an array of all objects intersecting with the
// moving object, then I created a similar block to
// test all these intersecting objects against all objects again,
// then I discovered the objects that were intersecting with the first block
Проблема это только дает мне 2-х уровней в глубину.
Как создать рекурсию здесь, которая пойдет на все дерево возможностей?
спасибо.
Первый абзац, если я полностью понял, будет падать на ту же проблему поиска дерева. Но код просто блестящий !!!!! Это самый простой ответ, который работает как шелк! Благодарю. – SpaceDog