Перевод уравнения равенства в C ++

Я пытаюсь проверить, пересекает ли круг квадрат. Лучший способ, которым я понял, как это сделать, - это определить, существует ли x такое, что: x находится между минимальным и максимальным значениями x квадрата;

abs(x-centerOfCircle) <= radiusOfCircle

Проблема в том, что я не могу понять, как перевести это в код, может ли кто-нибудь помочь?


person LarrySellers    schedule 01.11.2014    source источник
comment
@ 0x499602D2 Его проблема в том, как получить x, поскольку ему нужно выяснить, есть ли какой-нибудь x, который соответствует уравнению.   -  person Barmar    schedule 01.11.2014
comment
Вы не делаете этого, проверяя, есть ли такие x. Вы делаете это с помощью алгоритма, который работает с координатами углов квадрата. Я не знаю алгоритм навскидку, но уверен, что вы сможете найти его в гугле.   -  person Barmar    schedule 01.11.2014


Ответы (1)


Я бы преобразовал вашу проблему в определение того, находится ли центр круга внутри скругленного квадрата, определенного как контур вашего исходного квадрата по радиусу вашего круга.

Тогда проверка пересечения довольно тривиальна, проделав следующие простые подтесты:

  • центр круга внутри любого из 4 кругов (в углах sqare)?
  • центр круга внутри зеленого прямоугольника
  • центр круга внутри синего прямоугольника

Если какой-либо из этих трех тестов ИСТИНА, ваш круг пересекает ваш квадрат.

введите описание изображения здесь

person Anonymous    schedule 01.11.2014