|
1 / 1 / 0
Регистрация: 14.08.2012
Сообщений: 14
|
||||||
Задача отталкивания друг от друга хаотически движущихся прямоугольников15.08.2012, 15:43. Показов 6292. Ответов 4
Метки нет (Все метки)
Добрый день, семпаи. Есть программа, код которой я приведу ниже, где с помощью одного класса описано создание заданного количества случайного размера и цвета прямоугольников, которые хаотически движутся и отталкиваются от границ окна. Нужно доработать программу так, чтобы прямоугольники отталкивались ещё и друг от друга.
а) Проверяем на столкновение по горизонтали: В цикле проверяем на равенство координаты x каждого прямоугольника с координатой xSize всех других прямоугольников. б) При обнаружении равенства проверяем на истинность следующие неравенства y2 < y1 < ySize2 или y2 < ySize1 < ySize2 Где y1 и y2 координаты соответствующих прямоугольников. Если хоть одно из неравенств выполняется, учитывая условие 1, значит прямоугольники столкнулись и получают отрицательную скорость. Это что касается горизонтального столкновения. Вертикальное столкновение проверяем в аналогичном цикле только с координатами по оси y. Такой вот алгоритм, но я не могу написать его в синтаксисе Питона, я не знаю как из массива rectList извлекать координаты конкретных объектов класса Rect, чтобы их сравнивать. Кроме того, мне кажется, должен быть алгоритм и попроще просто я его не вижу.
0
|
||||||
| 15.08.2012, 15:43 | |
|
Ответы с готовыми решениями:
4
Сила отталкивания двух магнитов друг от друга Отталкивание движущихся кнопок друг об друга
|
|
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
|
|
| 19.08.2012, 06:24 | |
|
Я не совсем понял ваш алгоритм, но может несколько производительнее было бы при проверке двух фигур вначале проверять проекции на ось OX и OY, если хотя бы одна пара проекций не персекается(не имеет общих точек), то дальнейшую более глубокую проверку можно не производить - прямоугольники 100 процентов не пересекаются. Вообще алгоритмов очень много, гуглите pygame collision detection. На русском языке нашел такую статью, правда она для флэша, но там больше теории
http://noregret.org/tutor/n/collision/#start
1
|
|
|
1 / 1 / 0
Регистрация: 14.08.2012
Сообщений: 14
|
|||||||||||||||||
| 23.08.2012, 04:03 [ТС] | |||||||||||||||||
x - левая сторона другого прямоугольника self.xSize - Правая сторона прямоугольника xSize - правая сторона другого прямоугольника Координаты с "y" - это верх и низ Затем в цикле проверяем функцию столкновения и меняем скорость прямоугольников.
. И тут не обнулишь значения координат, как при столкновении с границами окна
0
|
|||||||||||||||||
|
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 7
|
|
| 14.09.2012, 21:52 | |
|
В pygame есть функция которая отдает список спрайтов которые в данный момент перекрылись координатами. Простейшее решение: если перекрыто, то скорость и направление спрайта меняется. Все.
Сейчас под рукой нет книги где алгоритм прописан. Ищите.
0
|
|
|
179 / 127 / 25
Регистрация: 12.01.2012
Сообщений: 623
|
|
| 15.09.2012, 10:54 | |
|
Bulkin, здесь не спрайты, а голое рисование на канве
0
|
|
| 15.09.2012, 10:54 | |
|
Помогаю со студенческими работами здесь
5
Определить число прямоугольников, которые не накладываются друг на друга Нарисовать в центре экрана десять вложенных друг в друга прямоугольников.
Нарисовать в центре экрана десять вложенных друг в друга прямоугольников Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|