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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2009, 14:04   #1
XeN0N
Форумчанин
 
Аватар для XeN0N
 
Регистрация: 18.01.2009
Сообщений: 118
По умолчанию Пересекаются ли фигуры?

есть прямоугольник заданный координатами нижнего левого и верхнего правого углов
есть окружность заданная координатами центра и радиусом

Нужно узнать пересекаются ли они
XeN0N вне форума Ответить с цитированием
Старый 20.01.2009, 14:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вспоминается такое:
Если координата Х нижнего левого угла минус координата Х центра по модулю окружности меньше радиуса
и тоже самое для координаты Y то пересекаются.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.01.2009, 14:18   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Следовало бы оговориться, что стороны прямоугольника параллельны осям координат, иначе прямоугольник по 2м вершинам не определен.
В этом случае легко найти координаты 2х другин вершин. Дальше просто посчитать расстояние от центра окружности до всех вершин. Если хоть одно расстояние меньше радиуса, пересекаются, если все расстояния больше радиуса, не пересекаются.
puporev вне форума Ответить с цитированием
Старый 20.01.2009, 14:20   #4
XeN0N
Форумчанин
 
Аватар для XeN0N
 
Регистрация: 18.01.2009
Сообщений: 118
По умолчанию

1 1

Последний раз редактировалось XeN0N; 20.01.2009 в 17:52.
XeN0N вне форума Ответить с цитированием
Старый 20.01.2009, 14:41   #5
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Дальше просто посчитать расстояние от центра окружности до всех вершин. Если хоть одно расстояние меньше радиуса, пересекаются, если все расстояния больше радиуса, не пересекаются.
Позволю себе не согласиться

возмемь следушие координаты...
нижний левый : X=0 Y=0
верхний правый : X=10 Y=10

координаты круга
центр X=5 Y=0
радиус =1

растояние от центра окружности до вершин будет больше чем радиус но окружность пересечет прямоугольник, по вашему вариянту он не должен пересечь...

Считаю что решение должно быть примерно следушее..
Необходимо сделать еще два прямоугольника...
Один с увиличиными размерами на радиус круга..
Второй с уменьшиными размерами на радиус круга...

Если центр круга попадает в увиличиный прямоугольник и при этом центр круга не попадает в прямоугольник с меньшим радиусом то круг пересекает прямоугольник..
при других условиях круг либо находиться в нутри прямоугольника и не пересекает не одну из его сторон либо находиться снаружи
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Старый 20.01.2009, 20:12   #6
XeN0N
Форумчанин
 
Аватар для XeN0N
 
Регистрация: 18.01.2009
Сообщений: 118
По умолчанию

поясни пожалуста
XeN0N вне форума Ответить с цитированием
Старый 20.01.2009, 21:14   #7
Neobrat
Форумчанин
 
Регистрация: 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
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Старый 20.01.2009, 21:16   #8
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

Хотя может я чет гоню...
скорее всего должно быть математическое решение..)
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Старый 20.01.2009, 22:32   #9
XeN0N
Форумчанин
 
Аватар для XeN0N
 
Регистрация: 18.01.2009
Сообщений: 118
По умолчанию

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

В той задаче встретилась проблема. Прога на питоне, точнее EventScripts Python.

вот в буквах:
Код:
if (x>res[map][i]["x1"]-r) and (x<res[map][i]["x2"]+r) and (y>res[map][i]["y1"]-r) and (y<res[map][i]["y2"]+r):
а вот в числах:

Код:
if (369.397521973>127-280) and (369.397521973<469+280) and (2232.4453125>2113-280 ) and (2232.4453125<2497+280):
Проблема в том, что условие не выполняется
x - дробный
res[map][i]["x1"] - целый
r - целый

Последний раз редактировалось Stilet; 21.01.2009 в 08:33.
XeN0N вне форума Ответить с цитированием
Старый 21.01.2009, 08:03   #10
Neobrat
Форумчанин
 
Регистрация: 10.12.2007
Сообщений: 124
По умолчанию

На Python не работал..
Но если проблемма в разных типах данных что тебе мешает целое число умножить на 1.00?

т.е примерно как
if (369.397521973>(127-280)*1.00)
Русский язык не мой конёк
Neobrat вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение фигуры по траектории 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