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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
anklbenz
7 / 7 / 1
Регистрация: 21.12.2012
Сообщений: 65
#1

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

11.01.2013, 13:33. Просмотров 1199. Ответов 4
Метки нет (Все метки)

Пишу арканоид. Есть окружность (биток) и прямоугольник.
Реализовал столкновение между ними:

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

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

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

есть случаи когда окружность попадает на угол прямоугольника, получается, что угловая точка прямоугольника уже проникла в окружность, а мой алгоритм находи точку на окружности см. вложение. как мне поступить, что почитать? Спасибо!
Миниатюры
Столкновения прямоугольника с окружностью  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2013, 13:33     Столкновения прямоугольника с окружностью
Посмотрите здесь:

C++ Найти площадь круга, ограниченного этой окружностью.
Найти площадь круга, ограниченного окружностью C++
Найти площадь круга, ограниченного окружностью заданной длины C++
C++ Столкновения
C++ Сколько точек пересечения имеет прямая у=кх+в с окружностью с центром в точке (0, 0) и радиусом R
Найти точки пересечения касательных с окружностью C++
C++ Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.
Обнаружение столкновения Sprite и отдельного Tile карты C++
Найти точки пересечения прямой с окружностью C++
C++ Найти направление движущейся окружности при столкновении с устойчивой окружностью в двумерном пространстве
Какова скорость тела в момент столкновения с землей, и когда это произойдет? C++
C++ Написать функцию проверки пересечения прямоугольника с окружностью

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12535 / 7097 / 797
Регистрация: 27.09.2012
Сообщений: 17,510
Записей в блоге: 2
Завершенные тесты: 1
12.01.2013, 00:08     Столкновения прямоугольника с окружностью #2
Может не стоит проверять все четыре стороны? В зависимости от расположения окружности относительно прямоугольника сравниваем радиус с растоянием до ближнего угла, либо радиус сравниваем с ближайшей точкой на ближней прямой (опускаем перпендикуляр на сторону прямоугольника)
anklbenz
7 / 7 / 1
Регистрация: 21.12.2012
Сообщений: 65
13.01.2013, 14:47  [ТС]     Столкновения прямоугольника с окружностью #3
Цитата Сообщение от Croessmah Посмотреть сообщение
Может не стоит проверять все четыре стороны? В зависимости от расположения окружности относительно прямоугольника сравниваем радиус с растоянием до ближнего угла, либо радиус сравниваем с ближайшей точкой на ближней прямой (опускаем перпендикуляр на сторону прямоугольника)
Да именно так сейчас и пытаюсь сделать.
Решать систему как я делал в начале дибилизм
Igor3D
852 / 438 / 38
Регистрация: 01.10.2012
Сообщений: 2,210
13.01.2013, 15:04     Столкновения прямоугольника с окружностью #4
Цитата Сообщение от anklbenz Посмотреть сообщение
есть случаи когда окружность попадает на угол прямоугольника, получается, что угловая точка прямоугольника уже проникла в окружность, а мой алгоритм находи точку на окружности см. вложение. как мне поступить
Части 2 отрезков оказались внутри, значит посчитать 2 вектора отскока и взвесить их по длине оказавшихся внутри отрезков.

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

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