Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Общее пересечение N окружностей 
V
    Опции темы
BOB4uK
  Дата 3.11.2008, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



Есть N точек (центры окружностей) и N радиусов, нужно найти одну точку пересечения этих окружностей Рисунок 1! Случай на рисунке два не рассматривается!
user posted image
PM MAIL ICQ   Вверх
Dmi3ev
Дата 3.11.2008, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



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



--------------------

PM MAIL   Вверх
BOB4uK
Дата 4.11.2008, 06:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



А как это оформить в универсальный алгоритм для любого кол-ва окружностей?!
PM MAIL ICQ   Вверх
Great Cornholio
Дата 4.11.2008, 17:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.6.2008

Репутация: 1
Всего: 1



Берём уравнение 1й окружности и уравнение 2й. Подбором получаем 2 точки. Если 1я точка принадлежит и 3й окружности, то записываем её, если нет, проверяем 2ю. И подставляем значение во все оставшиеся окружности. 
PM   Вверх
BOB4uK
Дата 9.11.2008, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



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

Все работает!
Супер!
PM MAIL ICQ   Вверх
de_Nis
Дата 9.11.2008, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старательный
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 19.10.2006
Где: Молдова

Репутация: нет
Всего: 6



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

--------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет…
PM   Вверх
YanTsys
Дата 12.11.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 22.3.2006

Репутация: нет
Всего: нет



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

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

Вобщем при сравнении точек делайте поправку на погрешность в вычислениях и не заморачивайтесь smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1099 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.