Найти положение окружности, касательной к двум другим окружностям

Скажем, есть 3 окружности, A, центрированные в точке a, B, центрированные в точке b, и C, центрированные в точке c. Каждый имеет известный радиус, независимый от других, Ar, Br и Cr. Положения a и b известны, а положение c - нет.

Расстояние между a и b всегда будет между (Ar + Br) и (Ar + Br + (2 * Cr)).

Я ищу алгоритм псевдокода, чтобы найти положение c так, чтобы окружности A и C касались, а окружности B и C касались. Должно быть два решения, если a и b не находятся на максимально допустимом расстоянии, в этом случае будет только одно.

Спасибо, любая помощь очень ценится.

1 ответ

"Надуйте" круги A и B на Rc одновременно с уменьшением C до одной точки. Тогда центр С появляется как пересечение двух раздутых кругов.

Напишите неявное уравнение двух кругов и вычтите одно из другого; Квадратичные члены удаляются, оставляя уравнение прямой (линии, проходящей через две точки пересечения).

(X-Xa)² + (Y-Ya)² = (Ra+Rc)²
(X-Xb)² + (Y-Yb)² = (Rb+Rc)²
    => by subtraction
(Xa-Xb)(2X-Xa-Xb) + (Ya-Yb)(2Y-Ya-Yb) = (Ra-Rb)(Ra+Rb+2Rc)

Чтобы решить это, вы можете выразить Y как функция X используя линейное соотношение, затем подставьте Y в уравнении одного из кругов и решить уравнение второй степени в X, дающий два решения.

Другие вопросы по тегам