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

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

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

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

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

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

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

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

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

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

Написать функцию проверки пересечения прямоугольника с окружностью - C++
Прямоугольник задан координатами его геометрического центра а так же шириной и высотой. У окружности даны координаты центра и радиус. ...

Столкновения - C++
Как проверить столкновение 2х объектов, если они заданы 2мя матрицами int m и m2, где каждый элемент матрицы может быть 1(занят) или...

Найти точки пересечения касательных с окружностью - C++
Даны координаты центра и радиус R окружности, координаты точки. Найти точки пересечения касательных с окружностью Даны координаты...

Найти площадь круга, ограниченного окружностью - C++
Помогите плиз!!! Надо зделать массив а я не шарю. Вот задание. Задается длина окружности. Найти площадь круга, ограниченного этой...

Найти точки пересечения прямой с окружностью - C++
Даны координаты центра (x,y) и радиус R, и коэффициенты А, В и С нормального уравнения прямой. Найти точки пересечения прямой с...

Найти площадь круга, ограниченного этой окружностью. - C++
помогите пожалуйста. 1.дано действительное число x .Не пользуясь никакими другими арифмитическими операциями,кроме умножения, сложения...

4
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,646
Записей в блоге: 3
Завершенные тесты: 1
12.01.2013, 00:08 #2
Может не стоит проверять все четыре стороны? В зависимости от расположения окружности относительно прямоугольника сравниваем радиус с растоянием до ближнего угла, либо радиус сравниваем с ближайшей точкой на ближней прямой (опускаем перпендикуляр на сторону прямоугольника)
0
anklbenz
7 / 7 / 1
Регистрация: 21.12.2012
Сообщений: 68
13.01.2013, 14:47  [ТС] #3
Цитата Сообщение от Croessmah Посмотреть сообщение
Может не стоит проверять все четыре стороны? В зависимости от расположения окружности относительно прямоугольника сравниваем радиус с растоянием до ближнего угла, либо радиус сравниваем с ближайшей точкой на ближней прямой (опускаем перпендикуляр на сторону прямоугольника)
Да именно так сейчас и пытаюсь сделать.
Решать систему как я делал в начале дибилизм
0
Igor3D
965 / 498 / 50
Регистрация: 01.10.2012
Сообщений: 2,495
13.01.2013, 15:04 #4
Цитата Сообщение от anklbenz Посмотреть сообщение
есть случаи когда окружность попадает на угол прямоугольника, получается, что угловая точка прямоугольника уже проникла в окружность, а мой алгоритм находи точку на окружности см. вложение. как мне поступить
Части 2 отрезков оказались внутри, значит посчитать 2 вектора отскока и взвесить их по длине оказавшихся внутри отрезков.

Вообще допускать пересечение - плохая идея. Всегда есть шаг по времени и скорость, нужно считать отскок до того как он реально произойдет
0
NIKOLAYY
739 / 711 / 159
Регистрация: 22.09.2012
Сообщений: 4,974
23.01.2015, 21:52 #5
Цитата Сообщение от Igor3D Посмотреть сообщение
Вообще допускать пересечение - плохая идея. Всегда есть шаг по времени и скорость, нужно считать отскок до того как он реально произойдет
А если представить что его окружность она не вписана в квадрат, а сама состоит из квадратов (квадратных пикселей) и проверять затем столкновение этих квадратов которые я упомянул и тогда неважно каким местом столкнется окружность, нужное событие произойдет незамедлительно?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2015, 21:52
Привет! Вот еще темы с ответами:

Найти площадь круга, ограниченного окружностью заданной длины - C++
Решите пожалуйста на С++ Дана длина окружности. Найти площадь круга, ограниченного этой окружностью. В качестве значения Pi использовать...

Обнаружение столкновения Sprite и отдельного Tile карты - C++
Доброго времени суток. Пытаюсь написать программу автоматичного выхода из лабиринта по правилу правой/левой руки, используя SFML. Нужна...

Сколько точек пересечения имеет прямая у=кх+в с окружностью с центром в точке (0, 0) и радиусом R - C++
задачи в программе CodeBlocks Помогите решить задачу: Сколько точек пересечения имеет прямая у=кх+в с окружностью с центром в точке...

Известна длина окружности. Найти площадь круга, ограниченного этой окружностью. - C++
Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
23.01.2015, 21:52
Ответ Создать тему
Опции темы

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