Re: точка пеpесечения тpех окpyжностей
- From
- Soldatenkov Mitea (2:5015/126.41)
- To
- Vlad Lesin ()
- Date
- 2003-02-27T22:16:54Z
- Area
- RU.ALGORITHMS
Привет, Vlad Lesin!
Ты вроде писал(а) в эху RU.ALGORITHMS следуюшее:
VL> Дано: кооpдинаты центpов окpyжностей и их pадиyсы. Тpебyется: _быстpо_
VL> найти кооpдинаты точки пеpесечения этих окpyжностей.
Прикинул тут на бумажке и вот что вышло: возмем две окружности, и измерим растояние
между их центрами. Если оно больше суммы их радиусов, эту пару не проверяем.
Иначе, расстояние обозначим за a. Радиусы за r для первой окружности и r1 для второй.
Теперь, расчитываем два коофицента: xk и yk. xk=(r^2-r1^2+a^2)/(2*a). yk=+/-sqrt(r^2-xk^2). Координаты
центров окружностей: x;y для первой, x1;y1 для второй. Координаты пересечения окружностей:
xp=x+(x1-x)/a*xk-(y1-y)/a*yk, yp=y+(y1-y)/a*xk+(x1-x)/a*yk. Далее, перебираешь по этому
алгоритму все три пары окружностей и получаешь точки их пересечения.
P.S. Хотя, естественно я неутверждаю что эта формула обязательно без ошибок: вполне мог где-нить ошибится.
---
* Origin: ...они лежат и бредят: когда-же он уедет? (2:5015/126.41)