Как найти точки пересечения окружностей
Перейти к содержимому

Как найти точки пересечения окружностей

  • автор:

Как найти точки пересечения окружностей

Paul Bourke

Перевод Кантора И.А.

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

Определить центр окружности по каноническому уравнению вида Ax 2 + Ay 2 + a1x + a2y + a0 = 0, где A =/= 0, довольно просто — это (-a1/2A, -a2/2A);

перенести систему координат можно простым преобразованием

— подставить вместо старых переменных их новые значения в уравнения.

В такой системе координат уравнения окружностей можно записать как

(1) x 2 + y 2 = R 2 (2)(x-a) 2 + (y-b) 2 = r 2

Раскрывая скобки, вычитая (1) из (2) и приводя подобные, получаем другой вид (2):

-2ax-2by = R 2 — r 2 — a 2 — b 2 .

Если еще упростить и немного поменять обозначения, то (2) приведется к виду

ax+by=C, где С — новое обозначение выражения справа.

Таким образом, имеем систему:

(1) x 2 + y 2 = R 2 (2) ax + by = C,

решение которой, надеюсь, не составит проблем (например, подойдет подстановка — естественно с учетом случаев a=0, b=0 и т.п.) (2) в (1) и имеем простое квадратное уравнение на одну из переменных.

Решив его и получив из (2) значение оставшейся переменной, имеем(если и только если она есть) точку пересечения.

Пусть нужно найти пару точек P3 пересечения, если они существуют.

Для начала найдем расстояние между центрами окружностей. d = || P1 — P0 ||. Если d > r0 + r1, тогда решений нет: круги лежат отдельно. Аналогично в случае d a 2 + h 2 = r0 2 and b 2 + h 2 = r1 2

Используя равенство d = a + b, мы можем разрешить относительно a:

a = (r0 2 — r1 2 + d 2 ) / (2 d)

В случае соприкосновения окружностей, это, очевидно, превратится в r0, так как: d = r0 + r1

Решим относительно h, подставив в первое уравнение h 2 = r0 2 — a 2

Таким образом, получаем координаты точек P3 = (x3,y3):

Как реализовать поиск координат пересечения трех окружностей, если даны координаты радиусов этих окружностей и их радиус?

Есть 3 точки и 3 расстояния
3 точки — 3 произвольные точки, которые являются центрами окружностей. Их координаты нам известны
3 расстояния — 3 расстояния, соответственно, от центров окружностей до точки пересечения этих окружностей
Эти окружности обязательно пересекаются и имеют одну общую точку.
Нужно найти координаты точки пересечения этих трех окружностей.

Если не привязываться к окружностям, то
Нам даны 3 точки на плоскости, нам известны их координаты
Нам даны 3 расстояния от этих точек
Нужно найти координаты точки, которая будет соответственно удалена от первой точки на первое расстояние, от второй на второе и от третьей на третье.

657b28e03e9f2196701119.png

Как реализовать это в виде кода на python? (Можно использовать sympy)

  • Вопрос задан 14 дек. 2023
  • 346 просмотров

1 комментарий

Простой 1 комментарий

Пересечение двух окружностей

Чтобы использовать калькулятор, введите координаты x и y центра и радиус каждой окружности.

Формулы для расчета приведены под калькулятором.

Точки пересечения двух окружностей
Первая окружность
Вторая окружность

Точность вычисления
Знаков после запятой: 2
Рассчитать
Проверка расстояния между окружностями
Файл очень большой, при загрузке и создании может наблюдаться торможение браузера.
Загрузить
Ссылка Сохранить Виджет

Пересечение окружностей

Сама по себе задача нахождения точек пересечения двух окружностей достаточно проста, однако предварительно надо проанализировать если ли вообще точки пересения у данных двух окружностей. Поэтому начать надо с вычисления расстояния d в декартовых координатах между центрами окружностей и сравнения его с радиусами окружностей r1 и r2.

При этом возможно следующие случаи (расстояние между центрами показано красным отрезком):

separate.png

contained.png

twopoints.png

twopoints2.png

onepoint.png

onepoint2.png

Если окружности действительно пересекаются, калькулятор использует следующие формулы (в-основном выведенные из теоремы Пифагора), проиллюстрированные рисунком ниже:

Two intersection points

Сначала калькулятор находит отрезок a

Чтобы найти точку P3, калькулятор использует следующую формулу (в векторном виде):

И наконец, чтобы найти точки пересечения, калькулятор использует следующие уравнения:
Первая точка:

Обратите внимание на разные знаки перед вторым слагаемым

По теме также можно посмотреть следующие ссылки (на английском языке): Circle-Circle Intersection и Circles and spheres

Как найти верхнюю точку пресечения двух окружностей?

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

Необходимо получить координаты верхней точки пересечения 2-x окружностей, для построения треугольника. Идея такова: Рисуем две прозрачных окружности, получаем точку и потом рисуем сам треугольник. Все три стороны мне известны (они же радиусы).

Отслеживать
13.8k 12 12 золотых знаков 44 44 серебряных знака 77 77 бронзовых знаков
задан 22 апр 2019 в 20:42
3,818 2 2 золотых знака 15 15 серебряных знаков 35 35 бронзовых знаков
я так понимаю радиусы и координаты центров заданы?
22 апр 2019 в 20:43
@StrangerintheQ Да)
22 апр 2019 в 20:44
а центры обязательно лежат на прямой параллельной оси x?
22 апр 2019 в 20:45
@StrangerintheQ Да, а смысл их располагать иначе для отрисовки?
22 апр 2019 в 20:49

При чем здесь треугольник? Какой треугольник? И почему точка — «вечерняя»? Она, что, по утрам — другая?

– user176262
22 апр 2019 в 21:35

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Фактически задача и сводится к построению треугольника по известным длинам трех его сторон.

Пусть центр левой окружности — это точка A , центр правой окружности — это точка B , а искомая точка их пересечения — точка C . Пусть a , b и c — длины сторон BC , AC и AB соответственно. Эти длины вам даны сразу. b — это радиус левой окружности, a — радиус правой окружности, а c — расстояние между их центрами.

    Если на минутку мысленно представить, что точки A и B лежат на оси X и точка A попадает в точку (0, 0) , а точка B — в точку (c, 0) , то тогда в такой системе координат кординаты «верхней» вершины C будут равны

xC = (b^2 + c^2 - a^2) / (2 * c) yC = sqrt(b^2 - Cx^2) 

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

  • Это дает нам способ решения исходной задачи. Сначала решаем задачу 1 и получаем величины xC и yC . Затем откладываем на отрезке AB отрезок AD длины xC . Это дает нам точку D . Затем мысленно строим перпендикуляр к прямой AB в точке D и по направлению «вверх» откладываем на нем отрезок DC длины yC . Это даст нам искомую точку C . При этом величина xC может оказаться больше длины отрезка AB , т.е. точка D может «улететь» за пределы этого отрезка. Ничего страшного и необычного в этом нет.
  • Альтернативным вариантом шага 2 будет:

    1. Решить задачу 1 и получить точку (xC, yC) . Затем повернуть эту точку на угол между осью X и прямой AB , получив в результате точку (xC’, yC’) . Затем прибавить к ней координаты точки A , получив искомую точку (xA + xC’, yA + yC’) . Но при этом надо рассмотреть две точки: (xC, ±yC) , ибо сразу не ясно, какая из них после поворота станет «верхней».

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *