Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.12.19;
Скачать: [xml.tar.bz2];

Вниз

Как определить пересекаются ли прямоугольник и круг ?   Найти похожие ветки 

 
Its'me   (2002-11-26 18:02) [0]

Задан центр круга X0, Y0. Координаты прямоугольника X1, Y1; X2, Y2 (верхний левый и нижни правый угол). Как узнать, пересекаются ли они ? И желательно узнать с какой стороной прямоуголника идет пересечение...


 
vopros   (2002-11-26 18:04) [1]

А радиус?


 
AL2002   (2002-11-26 18:05) [2]


> Its"me (26.11.02 18:02)

Т.е. их центр не идентичен?


 
Юрий Зотов   (2002-11-26 18:26) [3]

Можно чисто геометрически, а можно создать 2 региона (Elliptic и Rectangle) и скомбинировать их в третий. Пустой регион будет означать, что они не пересекаются.


 
AL2002   (2002-11-26 18:46) [4]

Если их центр в одной точке, то если круг имеет диаметр меньший чем высота и ширина прямоугольника — значит не пересекаются.


 
TTCustomDelphiMaster   (2002-11-26 18:48) [5]

Уравнение окружности:
(X-X0)^2+(Y-Y0)^2=R^2

Подставте туда X1 и найдете 2 точки пересечения с прямой на которой лежит одна из сторон стороной. Если координаты точек пересечения попадают в диапазон (y1..y2), то кружность пересекает сторону. Если корни комплексные, то линия не пересекается с окружность.
С другими сторонами аналогично.


 
Malder   (2002-11-26 19:25) [6]

AL2002 © (26.11.02 18:46)
Если их центр в одной точке, то если круг имеет диаметр меньший чем высота и ширина прямоугольника — значит не пересекаются.


Речь идет про круг, а не окружность.

Да, радиус круга задан - R.


 
AL2002   (2002-11-26 19:33) [7]


> Malder © (26.11.02 19:25)

Малдер! Ты появился. :))

А я про круг и говорил.


 
Malder   (2002-11-26 20:39) [8]

to AL2002
если бы их центры совпадали, то они точно пересекаются, так как имеется в виду не полый прямоугольник.

to Юрий Зотов
очень интересная идея ! Спасибо

P.S. Дело не в том даже, чтобы решить, а в том, чтобы решить задачу как можно проще.


 
Сатир   (2002-11-26 20:49) [9]

нужно описать четыре уравнения прямы, которые определяют прямоугольник и решить четыре системы уравнения, одно из которых будет напр
{ (x-x0)^2 +(y-y0)^2 = r^2
{ x=y1
{ x1<=x<=x2
в остальных системах будут изменены только два последних уравнения/условия


 
TTCustomDelphiMaster   (2002-11-26 21:17) [10]

Круг пересекается с прямоугольником еси выполняется одно из условий:
1. (X0>X1-R) and (X0<X2+R) and Y1>Y0 and Y0>Y2
2. (Y0>Y2-R) and (Y0<Y1+R) and X1>X0 and X0>X2

При условии что X1>X2 и Y1>Y2.
Чтобы определить с какой стороной пересекается см. TTCustomDelphiMaster © (26.11.02 18:48)


 
TTCustomDelphiMaster   (2002-11-26 21:25) [11]

Забыл еще 4 условия.
3. (X1-X0)^2+(Y1-Y0)^2<R^2
4. (X1-X0)^2+(Y2-Y0)^2<R^2
5. (X2-X0)^2+(Y1-Y0)^2<R^2
6. (X2-X0)^2+(Y2-Y0)^2<R^2


 
Наталия   (2002-11-27 07:05) [12]

Воспользуйся совктом Юрия Зотова о построении регионов - никаких уравнений решать не надо - уложишься в три строки.


 
sonja   (2002-11-27 12:43) [13]

>Наталия © (27.11.02 07:05)
А как ты собираешься узнать с какой стороны идет пересечение??


 
sonja   (2002-11-27 12:48) [14]

>Сатир © (26.11.02 20:49)
Поддерживаю


 
Наталия   (2002-11-27 12:59) [15]

sonja © (27.11.02 12:43)
Прямоугольник разбить на 4 региона, соответствующих каждой стороне и проверить, какие из этих регионов пересекаются с кругом.


 
Сатир   (2002-11-27 14:10) [16]

2Наталия © (27.11.02 12:59)
а как Вы предлагаете разбивать квадрат (предложите универсальный алгоритм построения региона;)?
а если круг пересекает две смежные стороны или две противоположные?


 
MBo   (2002-11-27 14:14) [17]

>Сатир
строим 4 региона 1*(длина ребра)



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.12.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.008 c
1-61625
Riperr
2002-12-07 08:59
2002.12.19
Metods


1-61658
a3m
2002-12-07 17:17
2002.12.19
Граббёр


6-61720
DED LOGOPED
2002-10-23 21:12
2002.12.19
Помогите с сокетами, почему при частом обращении отрубает?


3-61463
Larisa
2002-11-26 00:32
2002.12.19
Создание отчета в MS Word.


7-61849
ZMaxim
2002-09-14 17:09
2002.12.19
Алгоритм случайных чисел





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский