Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Общее пересечение N окружностей


Автор: BOB4uK 3.11.2008, 18:16
Есть N точек (центры окружностей) и N радиусов, нужно найти одну точку пересечения этих окружностей Рисунок 1! Случай на рисунке два не рассматривается!
http://ipicture.ru/

Автор: Dmi3ev 3.11.2008, 18:55
надо записать уравнение окружности для каждой окружности и зная, что точка принадлежит каждой из окружности решить систему уравнений

Автор: BOB4uK 4.11.2008, 06:25
А как это оформить в универсальный алгоритм для любого кол-ва окружностей?!

Автор: Great Cornholio 4.11.2008, 17:15
Берём уравнение 1й окружности и уравнение 2й. Подбором получаем 2 точки. Если 1я точка принадлежит и 3й окружности, то записываем её, если нет, проверяем 2ю. И подставляем значение во все оставшиеся окружности. 

Автор: BOB4uK 9.11.2008, 07:27
Спасибо!
Нахожу пересечение двух первых окружностей а потом проверяю полученные точки на пренадлежность к остальным окружнастям по формуле x*x+y*y=r*r

Все работает!
Супер!

Автор: de_Nis 9.11.2008, 08:22
"...по формуле x*x+y*y=r*r..."
Это формула окружности с центром в точке 0,0 (точке пересечения координатных осей). Судя по рисунку, центры окружностей не обязательно располагаются в точке 0,0. 
Может быть, правильнее применять более общую формулу 
(х-х0)*(х-х0)+(y-y0)*(y-y0)=r*r, 
где x0, y0 - координаты центра окружности?

Автор: YanTsys 12.11.2008, 20:13
Кроме того если точка окажется в иррациональных координатах то вполне возможна ситуация что общая точка у 1-2 окружности из-за погрешностей вычислений будет не равна общей точке 2-3 окружностей.
В этом случае нужно либо искать совпадение с допустимым отклонением, либо действительно подбирать общее уравнение.

Думаю все точки центров окружности образовывают многоугольник а искомая точка отклоняется от его средней точки на величину обратно-пропорциональную величине радиусов окружностей.

Вобщем при сравнении точек делайте поправку на погрешность в вычислениях и не заморачивайтесь smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)