Форум программистов, компьютерный форум CyberForum.ru

Столкновения прямоугольника с окружностью - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
anklbenz
7 / 7 / 1
Регистрация: 21.12.2012
Сообщений: 65
11.01.2013, 13:33     Столкновения прямоугольника с окружностью #1
Пишу арканоид. Есть окружность (биток) и прямоугольник.
Реализовал столкновение между ними:

Прямоугольник, это 4 уравнения прямой типа Ax+By+C=0
Окружность уравнение окружности (x-x1)^2+(y-y1)^2=R^2

решаю в цикле эту систему, по каждой из сторон и уравнению окружности
нахожу точку (точки) пересечения, умножаю на -1 нормальный вектор между центром и точкой столкновения.

получаю нормальный отскок от всех сторон прямоугольника, Но

есть случаи когда окружность попадает на угол прямоугольника, получается, что угловая точка прямоугольника уже проникла в окружность, а мой алгоритм находи точку на окружности см. вложение. как мне поступить, что почитать? Спасибо!
Миниатюры
Столкновения прямоугольника с окружностью  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
12.01.2013, 00:08     Столкновения прямоугольника с окружностью #2
Может не стоит проверять все четыре стороны? В зависимости от расположения окружности относительно прямоугольника сравниваем радиус с растоянием до ближнего угла, либо радиус сравниваем с ближайшей точкой на ближней прямой (опускаем перпендикуляр на сторону прямоугольника)
anklbenz
7 / 7 / 1
Регистрация: 21.12.2012
Сообщений: 65
13.01.2013, 14:47  [ТС]     Столкновения прямоугольника с окружностью #3
Цитата Сообщение от Croessmah Посмотреть сообщение
Может не стоит проверять все четыре стороны? В зависимости от расположения окружности относительно прямоугольника сравниваем радиус с растоянием до ближнего угла, либо радиус сравниваем с ближайшей точкой на ближней прямой (опускаем перпендикуляр на сторону прямоугольника)
Да именно так сейчас и пытаюсь сделать.
Решать систему как я делал в начале дибилизм
Igor3D
791 / 408 / 33
Регистрация: 01.10.2012
Сообщений: 2,061
13.01.2013, 15:04     Столкновения прямоугольника с окружностью #4
Цитата Сообщение от anklbenz Посмотреть сообщение
есть случаи когда окружность попадает на угол прямоугольника, получается, что угловая точка прямоугольника уже проникла в окружность, а мой алгоритм находи точку на окружности см. вложение. как мне поступить
Части 2 отрезков оказались внутри, значит посчитать 2 вектора отскока и взвесить их по длине оказавшихся внутри отрезков.

Вообще допускать пересечение - плохая идея. Всегда есть шаг по времени и скорость, нужно считать отскок до того как он реально произойдет
NIKOLAYY
714 / 693 / 152
Регистрация: 22.09.2012
Сообщений: 4,857
23.01.2015, 21:52     Столкновения прямоугольника с окружностью #5
Цитата Сообщение от Igor3D Посмотреть сообщение
Вообще допускать пересечение - плохая идея. Всегда есть шаг по времени и скорость, нужно считать отскок до того как он реально произойдет
А если представить что его окружность она не вписана в квадрат, а сама состоит из квадратов (квадратных пикселей) и проверять затем столкновение этих квадратов которые я упомянул и тогда неважно каким местом столкнется окружность, нужное событие произойдет незамедлительно?
Yandex
Объявления
23.01.2015, 21:52     Столкновения прямоугольника с окружностью
Ответ Создать тему
Опции темы

Текущее время: 00:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru