2014-11-01 2 views
0

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

abs(x-centerOfCircle) <= radiusOfCircle 

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

+0

@ 0x499602D2 Его проблема в том, как получить 'x', так как ему нужно выяснить, есть ли' x', что соответствует уравнению. – Barmar

+1

Вы не делаете этого, проверяя, есть ли такой 'x'. Вы делаете это с помощью алгоритма, который работает с координатами углов квадрата. Я не знаю алгоритма, но я уверен, что вы можете найти его по поиску. – Barmar

ответ

3

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

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

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

Если какой-либо из этих 3-х тестов TRUE, ваш круг пересекает ваш квадрат.

enter image description here