![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 18.01.2009
Сообщений: 118
|
![]()
есть прямоугольник заданный координатами нижнего левого и верхнего правого углов
есть окружность заданная координатами центра и радиусом Нужно узнать пересекаются ли они |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Вспоминается такое:
Если координата Х нижнего левого угла минус координата Х центра по модулю окружности меньше радиуса и тоже самое для координаты Y то пересекаются.
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 13.10.2007
Сообщений: 2,740
|
![]()
Следовало бы оговориться, что стороны прямоугольника параллельны осям координат, иначе прямоугольник по 2м вершинам не определен.
В этом случае легко найти координаты 2х другин вершин. Дальше просто посчитать расстояние от центра окружности до всех вершин. Если хоть одно расстояние меньше радиуса, пересекаются, если все расстояния больше радиуса, не пересекаются. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 18.01.2009
Сообщений: 118
|
![]()
1 1
Последний раз редактировалось XeN0N; 20.01.2009 в 17:52. |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 10.12.2007
Сообщений: 124
|
![]() Цитата:
возмемь следушие координаты... нижний левый : X=0 Y=0 верхний правый : X=10 Y=10 координаты круга центр X=5 Y=0 радиус =1 растояние от центра окружности до вершин будет больше чем радиус но окружность пересечет прямоугольник, по вашему вариянту он не должен пересечь... Считаю что решение должно быть примерно следушее.. Необходимо сделать еще два прямоугольника... Один с увиличиными размерами на радиус круга.. Второй с уменьшиными размерами на радиус круга... Если центр круга попадает в увиличиный прямоугольник и при этом центр круга не попадает в прямоугольник с меньшим радиусом то круг пересекает прямоугольник.. при других условиях круг либо находиться в нутри прямоугольника и не пересекает не одну из его сторон либо находиться снаружи
Русский язык не мой конёк
![]() |
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 18.01.2009
Сообщений: 118
|
![]()
поясни пожалуста
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 10.12.2007
Сообщений: 124
|
![]()
ну как пояснить бы...
на примере... Хотя может я задачу не понял... Если центр окружности сопадает с центром прямоугольника то предыдуший пост был правильным " Сообщение от puporev Посмотреть сообщение Дальше просто посчитать расстояние от центра окружности до всех вершин. Если хоть одно расстояние меньше радиуса, пересекаются, если все расстояния больше радиуса, не пересекаются." С одним дополнением.. радиус окружности должен быть больше чем половине наименьшей стороне прямоугольника и не больше чем половина наибольшей стороны прямоугольника...(т.е. исключить ситуацию окружность в прямоугольнике или прямоугольник в окружности) если же как я понял задачу, что окружность может где угодно находиться на плоскости то обьясняю как могу на примере исходные данные.. прямоугольник левый нижний X=0 Y=0 правый верхний X=10 Y=10 Таким образом у нас четыре точки С(для простоты точку буду называть С(X,Y) ) C1(0,0) C2(0,10) C3(10,10) C4(10,0) Естественно и четыри линии... Как я понял суть задачи сказать пересекает ли окружность любую из сторон(ы) прямоугольника..... Таким образом получаеться для того чтобы окружность с радиусом R пересекла одну или несколько сторон прямоугольника то необходимо что бы центр этой окружности находился на растоянии от любой из линии не менее радиуса самой окружности... Таким образом надо проверять условия... T-центр окружности.. С1-R<T<C1+R С2-R<T<C2+R С3-R<T<C3+R С4-R<T<C4+R
Русский язык не мой конёк
![]() |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 10.12.2007
Сообщений: 124
|
![]()
Хотя может я чет гоню...
скорее всего должно быть математическое решение..)
Русский язык не мой конёк
![]() |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 18.01.2009
Сообщений: 118
|
![]()
задача другая но ты помог найти решение, спс
в условии я написал окружность хотя имелся ввиду круг, сори В той задаче встретилась проблема. Прога на питоне, точнее EventScripts Python. вот в буквах: Код:
Код:
x - дробный res[map][i]["x1"] - целый r - целый Последний раз редактировалось Stilet; 21.01.2009 в 08:33. |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 10.12.2007
Сообщений: 124
|
![]()
На Python не работал..
Но если проблемма в разных типах данных что тебе мешает целое число умножить на 1.00? т.е примерно как if (369.397521973>(127-280)*1.00)
Русский язык не мой конёк
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Движение фигуры по траектории | Dgohn | Общие вопросы Delphi | 3 | 08.01.2009 09:36 |
Определение геометрической фигуры | kJlaCuk | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 28.12.2008 19:18 |
Детали, фигуры | dma | Microsoft Office Excel | 1 | 17.10.2007 09:22 |
Разбор изображения на фигуры | Роман Радер | Общие вопросы Delphi | 8 | 10.02.2007 19:20 |