Нахождение расстояния между двумя кругами - PullRequest
7 голосов
/ 01 апреля 2011

Я пытаюсь выяснить, как определить расстояние от двух кругов до углов их квадратных контейнеров.Мне нужна помощь с математикой.

Finding distance between two circles

Как определить количество пикселей для строки, отмеченной знаком вопроса?помогите как всегда.

Ответы [ 4 ]

12 голосов
/ 01 апреля 2011

tldr : Рассчитать расстояние между центральными точками каждого круга, а затем вычесть из этого радиус каждого круга.

Для демонстрации мы примем следующее:

  • Круг диаметром 200px (r1 = 100) находится в координатах (x, y) (0, 0), а
  • круг диаметром 100px (r2 = 50) в(x, y) координаты (150, -150).

Учитывая, что расстояние между их центрами равно: Distance

Чтобы найти расстояние между их границами, мы вычитаем радиус каждого круга от расстояния между их центрами.

Это оставляет нас с уравнением:

sqrt((x2 − x1)^2 + (y2 − y1)^2) − (r2 + r1)

Вставка ваших значений в выше дает:

sqrt((150 − 0)^2 + (-150 − 0)^2) − (100 + 50) = 62.132034356px
3 голосов
/ 01 апреля 2011

У вас есть средняя точка каждого круга? Если вы это сделаете, сначала рассчитайте расстояние от центра кругов.

расстояние² = центр1² + центр2²

Тогда вам нужно будет минус радиус обоих кругов. В вашем случае это будет 150 (100 + 50)

2 голосов
/ 01 апреля 2011

Алгебраически упрощенная версия ответа Даниила:

  (r1 + r2) * (sqrt(2) - 1) 
= (s1 + s2) * (sqrt(2) - 1)/2

, где r1, r2 - два радиуса, а s1, s2 - две квадратные стороны. Это легко увидеть, посмотрев на каждый квадрат по отдельности и заметив, что расстояние d1 от центра круга / квадрата до угла квадрата равно sqrt (2) * r, а требуемое расстояние в этом квадрате равно d1 - радиус круга r.

2 голосов
/ 01 апреля 2011

Давайте посмотрим ... каждый радиус равен половине длины каждой стороны, и вычитание суммы радиусов из расстояния между центром дает вам оставшееся количество.

Надеюсь, что поможет?

...