Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 17.06.2011, 14:49   #1
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию как узнать пересекаются 2 окружности или нет

есть 2 окружности, известны центры окружностей и их радиус, как узнать пересекаются они или нет?
понятно что две окружности пересекаются, если расстояние между их центрами меньше суммы их радиусов.
есть массив окружностей, прохожусь по ним циклом, в цикле поставил условие
if ((p[i].r+r>=abs(p[i].p.X-t.X))and(p[i].r+r>=abs(p[i].p.y-t.y))) then
как-то не корректно работает.
На форме видно что они не пересекаются а условие говорит что пересекаются
Где:
p[i].r - радиус очередной окружности из массива
r - радиус окружности какую мы проверяем на пересечение с ней других окружностей
p[i].p.X - центр по х очередной окружности из массива
t.X - центр по х окружности какую мы проверяем на пересечение с ней других окружностей
p[i].p.y - аналогично p[i].p.X
t.y - аналогично t.X
fate вне форума
Старый 17.06.2011, 15:19   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Э!! Так Вы же расстояние неправильно вычисляете!

Расстояние между двумя точками - это корень квадратный из суммы квадратов разности соответствующих координат.

Пусть есть точка A с координатами (Xa, Ya) и точка B с с координатами (Xb, Yb)
тогда расстояние Lab между ними будет:
Код:
Lab := sqrt( sqr(Xa-Xb) + sqr(Ya-Yb) );
Serge_Bliznykov вне форума
Старый 17.06.2011, 15:27   #3
fate
Форумчанин
 
Аватар для fate
 
Регистрация: 17.03.2009
Сообщений: 318
По умолчанию

аааа точно, я ж делал такое.
Счас исправлю

вооо, совсем другое дело

Последний раз редактировалось Stilet; 17.06.2011 в 15:37.
fate вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как узнать занят порт или нет DeDoK Работа с сетью в Delphi 3 12.09.2010 21:51
Как узнать программа запущена или нет? ilSMoKEli Общие вопросы Delphi 5 02.05.2010 23:01
обновление в блоге - Как узнать, запущена программа с правами администратора или нет Pblog Обсуждение статей 0 05.03.2010 20:50
Как узнать открыл пользователь окно или нет? KaimNotark Общие вопросы Delphi 5 09.02.2010 09:38
как узнать что введено а Edit1 цифры или нет doncova1 Компоненты Delphi 9 05.02.2007 10:43