Форум: "Потрепаться";
Текущий архив: 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