Я предполагаю, что должен быть цикл, который берет ссылку на 1 объект, находит координаты, а затем проверяет с остальными остальными объектами, чтобы видеть, есть ли какое-либо столкновение. Я не уверен, насколько хорошо мое решение для миллионов объектов.
Псевдопользователей-код:
For each irregular shaped object1
int left1, left2;
int right1, right2;
int top1, top2;
int bottom1, bottom2;
bool bRet = 1; // No collision
left1 = object1->x;
right1 = object1->x + object1->width;
top1 = object1->y;
bottom1 = object1->y + object1->height;
For each irregular shaped object2
{
left2 = object2->x;
right2 = object2->x + object2->width;
top2 = object2->y;
bottom2 = object2->y + object2->height;
if (bottom1 < top2) bRet =0;
if (top1 > bottom2) bRet = 0;
if (right1 < left2) bRet = 0;
if (left1 > right2) bRet = 0;
}
return bRet;