Найти положение окружности, касательной к двум другим окружностям
Скажем, есть 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
, дающий два решения.