Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
EDWIN503
1 / 1 / 2
Регистрация: 20.10.2016
Сообщений: 118
1

Просчет столкновения множества объектов

18.02.2018, 08:46. Просмотров 822. Ответов 4
Метки нет (Все метки)

Доброго времени суток, есть задача: В окне движутся объекты (круги), отбиваясь от рамок окна, как только два круга столкнулись, оба уничтожаются.

Из раздела Java меня направили к вам)

Движение в окне и отбивание от рамок окна я уже реализовал на Java, выглядит это так:

В коллекцию ArrayList я записываю объекты при их создании, после этого я прохожусь в цикле по всей коллекции и вызываю для каждого элемента функцию, которая меняет их положение, в эту функцию я передаю размеры окна, далее идет проверка, если позиция объекта по X или по Y (+ размер объекта) равна размерам окна, то объект меняет направление своего движения.

Вопрос такой: Как реализовать столкновение объектов друг с другом?

Не могу же я сравнивать координаты каждого объекта со всеми другими. Ведь есть объектов будет много то я так без компа останусь xD.

В общем, прошу вашей помощи в этом вопросе. Заранее благодарю.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2018, 08:46
Ответы с готовыми решениями:

Покрытие множества. Или как из списка объектов выбрать оптимальный набор комплектов. [C#]
Здравствуйте. Есть список объектов имеющих стоимость. Объекты различаются по типу. Есть...

Столкновения объектов
Выполнить имитационное моделирование. Дана задача, пушка стреляет снаряды, через определенное...

Эмуляция столкновения объектов
как сделать так чтоб квадратик оталкивался от пложщадки в которой сам гуляет? и красиво двигался...

Столкновения движущихся объектов
имеются несколько объектов, движущихся за курсором. нужно расчитать столкновения, чтобы они не...

Столкновения объектов SFML
Есть желание сделать какой то простенький файтинг(на SFML) . Но столкнулся с проблемой , не могу...

4
Igor3D
1227 / 594 / 74
Регистрация: 01.10.2012
Сообщений: 2,844
18.02.2018, 12:23 2
Цитата Сообщение от EDWIN503 Посмотреть сообщение
Вопрос такой: Как реализовать столкновение объектов друг с другом?
Не могу же я сравнивать координаты каждого объекта со всеми другими. Ведь есть объектов будет много то я так без компа останусь xD.
Вечнозеленая задача

Сортируете объекты по оси X или Y. Находите пересечения напр с объектом 100 (индекс в сортированном контейнере). Просматриваете объекты от 101 до тех пор пока расстояние между ними по X не превысит макс радиус. Остальные можно не смотреть, т.к они заведомо не пересекутся.

Не по теме:

Для желающих копать: а почему по одной оси, а не по обеим сразу? К сожалению, простыми средствами это не удается, это делает kd-tree

0
Gagoose
Заблокирован
18.02.2018, 19:56 3
a = abs(self.x + self.dx - ball.x)
b = abs(self.y + self.dy - ball.y)
return (a * a + b * b) ** 0.5 <= self.radius + ball.radius
0
ili1
Заблокирован
18.02.2018, 20:11 4
EDWIN503,
пусть дано N объектов.
В вашей задаче как раз и придется брать первый объект
и вычислять расстояния до всех остальных. Потом брать
второй объект и вычислять расстояния до всех, кроме первого.
и так далее... всего будет (N - 1) + (N - 2) + ... + 2 + 1 = N(N - 1)/2
Да, тут много расчетов, но никуда не денешься...
0
Shamil1
Модератор
2234 / 1522 / 346
Регистрация: 26.03.2015
Сообщений: 5,430
19.02.2018, 10:24 5
Лучший ответ Сообщение было отмечено EDWIN503 как решение

Решение

Если размеры кругов небольшие (по сравнению с размером окна), то можно использовать сетку. Разбить окно на клетки и отслеживать, в каких клетках находятся центры кругов.
1
19.02.2018, 10:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2018, 10:24

Столкновения объектов в QGraphicsScene
Здравствуйте, я совсем новичок в Qt, но есть небольшой проект, суть в следующем: Имеется простая...

Реализация столкновения объектов
Как сделать так чтобы два квадрата сталкивались , ну допусти у меня есть два квадрата, одни синий...

Проверка столкновения объектов rectangle
Дарова всем! есть 2 ректангла, которые отскакивают от краев экрана, как сделать так чтобы они...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru