Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм поиска вхождения одной фигуры в другую 
V
    Опции темы
animegirl
Дата 23.9.2012, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Есть два прямоугольника с координатами. Надо найти входит ли второй в координаты первого.
Первый прямоугольник M имеет координаты сторон MT MR MB ML
Второй прямоугольник C имеет координаты сторон CT CR CB CL
T,R,B,L - top, right, bottom, left
Что у меня выходит:

((ML<CL<MR) И ((MT<CT<MB) ИЛИ (MT<CB<MB))) ИЛИ ((ML<CR<MR) И ((MT<CT<MB) ИЛИ (MT<CB<MB)))

Вроде как два раза проходила логику в Школе и в Институте, но не могу вспомнить правила упрощения. Здесь есть повторяющийся блок. Как его правильно вынести?


--------------------
Скажи миру - НЯ!
PM   Вверх
DarkProg
  Дата 23.9.2012, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: нет
Всего: 19



А почему равенство не используешь?
Ты не допускаешь, что у них может быть общая грань? Или одна из вершин внутреннего прямоугольника может лежать на грани внешнего?

Цитата(animegirl @  23.9.2012,  15:46 Найти цитируемый пост)
Здесь есть повторяющийся блок. Как его правильно вынести? 

Замени отдельные условия на буквы, которые явно визуально повторяются, т.е. формально MT<CB<MB = А, которое принимает два значения True или False и я думаю сразу сможешь увидеть что и как упростить.
Просто работать с операциями меньше/больше не удобно, их проще обозначать через буквы и там уже глядишь и решение приходит более простое ;)

 


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
_Y_
Дата 23.9.2012, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Проверять-ли равенство зависит от условий задачи, а именно от того, что определяется словом "входит". Если общая грань считается вхождением, то вместо < или > надо использовать <= или =>. Вот и все. В остальном же сложность проверки зависит исключительно от того параллельны ли прямоугольники. 

Если параллельны, то все предельно просто. Сначала, если надо, поворачиваем систему координат параллельно прямоугольникам. Потом проверяем.
ML<CL
И 
MT<CT
И
CB<MB
И
CR<MR

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





--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 23.9.2012, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



(MT-CT)*(MB-CB)<=0


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 24.9.2012, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Akina, выглядит, конечно, красивее, но если уж доводить до абсолюта, то булево выражение должно работать быстрее:

(ML<CL) && (CB<MB)
(ML<CL) && (CR<MR) 
жутко извиняюсь за ошибку в символах smile 

Это сообщение отредактировал(а) _Y_ - 24.9.2012, 12:24


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Akina
Дата 24.9.2012, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



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



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
rodnover
Дата 24.9.2012, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: нет
Всего: 10



Попробовать решить обратную задачу. Она проще.

(CM < ML) or (CR > MR) or (CT > MT) or (CB < MB) - если это условие верно, то второй прямоугольник не входит в первый.


Код

if not ((CM < ML) or (CR > MR) or (CT > MT) or (CB < MB)) then
begin
  // Входит
end
else
begin
  // не входит
end

PM MAIL   Вверх
animegirl
Дата 24.9.2012, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



DarkProg, Допускаю, упустила из виду.
Раставила буквы, вышло:
(A И (C ИЛИ D)) ИЛИ (B И (C ИЛИ D))
Упростила, но не совсем уверена в правоте, так правильно:
(A ИЛИ B) И (C ИЛИ D)
?

Добавлено через 1 минуту и 49 секунд
_Y_, В каком плане параллельны?
Параллельны ли стороны вроде ML / CL? Да параллельны. Ну то есть по оси никак не повёрнуты.

Добавлено через 7 минут и 6 секунд
Цитата(Akina @  23.9.2012,  23:15 Найти цитируемый пост)
(MT-CT)*(MB-CB)<=0

Не совсем понимаю данную формулу. Она не полна или мне кажется? Так или иначе, я просто подставила туда цифры, и результат не верен. Возможно моя вина, я не совсем верно выразилась, но имеет ввиду, не то, что фигура Б должна быть полностью внутри фигуры А, хватить любое соприкосновение.

Добавлено через 8 минут и 52 секунды
Цитата(rodnover @  24.9.2012,  10:01 Найти цитируемый пост)
Попробовать решить обратную задачу. Она проще.(CM < ML) or (CR > MR) or (CT > MT) or (CB < MB) - если это условие верно, то второй прямоугольник не входит в первый.

Согласна, но наврятли её так просто запихнуть потом в запрос SQL  smile 


--------------------
Скажи миру - НЯ!
PM   Вверх
Akina
Дата 24.9.2012, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(animegirl @  24.9.2012,  12:44 Найти цитируемый пост)
Не совсем понимаю данную формулу. Она не полна или мне кажется? Так или иначе, я просто подставила туда цифры, и результат не верен.

Это полное покрытие по одной координате.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
animegirl
Дата 24.9.2012, 12:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Цитата(Akina @  24.9.2012,  11:58 Найти цитируемый пост)
Это полное покрытие по одной координате.

Я так и предполагала.
Цитата(animegirl @  24.9.2012,  11:44 Найти цитируемый пост)
Раставила буквы, вышло:(A И (C ИЛИ D)) ИЛИ (B И (C ИЛИ D))Упростила, но не совсем уверена в правоте, так правильно:(A ИЛИ B) И (C ИЛИ D)?

Оно верно. Сделала по старинке, как в школе, расчертила сетку с строками от 0000 до 1111 для обоих вариантов, результат 100% совпадение. Потом глянула, а что же это будет в начальных вариаблах, и тут вырисовывается легкое читаемое "Если сторона левая либо сторона правая входят в прямоугольник, а так же либо сторона верхняя либо сторона нижняя тоже туда входят" поняв простоту, хлопнула себя по лбу. Простота ведь была рядом, прям на ладони


--------------------
Скажи миру - НЯ!
PM   Вверх
_Y_
Дата 24.9.2012, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(animegirl @  24.9.2012,  11:44 Найти цитируемый пост)
_Y_, В каком плане параллельны?
Параллельны ли стороны вроде ML / CL? Да параллельны. Ну то есть по оси никак не повёрнуты.

ИМХО если любые две стороны принадлежащие двум прямоугольникам параллельны друг другу, то прямоугольники параллельны. У Вас, в придачу, прямоугольники еще и параллельны системе координат - даже поворачивать ничего не нужно.

Давайте я Вам картинку нарисую, чтобы понятнее было. Зеленые линии - система координат с нулем в верхнем левом углу.
user posted image

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

Понятно, что если стороны внутреннего и внешнего прямоугольника имеют право совпадать, знаки больше-меньше должны быть заменены на >= и <=.

В моем посте выше именно все это и было описано, но для проверки только по одной оси т.к. проверка по осям производится одинаково. Но я, к сожалению, перепутал символы, за что и жутко извиняюсь. Надо 
(ML<CL) && (CR<MR) 

Это сообщение отредактировал(а) _Y_ - 24.9.2012, 12:23


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
rodnover
Дата 24.9.2012, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: нет
Всего: 10



Цитата(animegirl @  24.9.2012,  15:44 Найти цитируемый пост)
Согласна, но наврятли её так просто запихнуть потом в запрос SQL  smile  

А в чём проблема?

Код

select *
from SQUARE C, SQUARE M
where not ((C.L < M.L) or (C.R > M.R) or (C.T > M.T) or (C.B < M.B))

PM MAIL   Вверх
animegirl
Дата 24.9.2012, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Цитата(rodnover @  24.9.2012,  15:40 Найти цитируемый пост)
А в чём проблема?


Долго коробило, не могла понять, теперь поняла. Так ведь вы этой формулой находите всё что угодно. Как бы объяснить. Ну как минимум сравнение двух координат надо ведь, иначе как-то странно. Опять сама запуталась. Не могу объяснить, но в голове не укладывается, всё почему-то говорит за то, что результат будет неверный. 

Человеческими словами это как будет?


--------------------
Скажи миру - НЯ!
PM   Вверх
rodnover
Дата 24.9.2012, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: нет
Всего: 10



Как я понял из вашего первого сообщения

Цитата(animegirl @  23.9.2012,  18:46 Найти цитируемый пост)
Первый прямоугольник M имеет координаты сторон MT MR MB ML
Второй прямоугольник C имеет координаты сторон CT CR CB CL
T,R,B,L - top, right, bottom, left


Пусть есть 2 прямоугольника ABCD

Код

A(ML, MB)
B(MR, MB)
C(MR, MT)
D(ML, MT)

ML < MR, MB < MT


 и EFGH

Код

E(CL, CB)
F(CR, CB)
G(CR, CT)
H(CL, CT)

CL < CR, CB < CT


Условие, по которому левая грань треугольника EFGH выходит за границу ABCD
Код

CL < ML


Аналогично для верхней, правой, нижней, соответственно:

Код

CT > MT
CR > MR
CB < MB


Если, хотя бы, одна грань прямоугольника EFGH выходит за границу прямоугольника ABCD,то EFGH не входит в ABCD. Следовательно, все остальные прямоугольники, не попавшие под это условие выполняют требуемое условие.

В итоге получаем код приведенный мною выше

Код

select *
from SQUARE C, SQUARE M
where not ((C.L < M.L) or (C.R > M.R) or (C.T > M.T) or (C.B < M.B))

где C.L аналогично CL, в рассуждениях выше, C.B - CB и так далее. Код получает все прямоугольники, кроме тех, в которых EFGH хотя бы одной гранью выходит за ABCD.
PM MAIL   Вверх
_Y_
Дата 24.9.2012, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(rodnover @ 24.9.2012,  17:22)
Код

select *
from SQUARE C, SQUARE M
where not ((C.L < M.L) or (C.R > M.R) or (C.T > M.T) or (C.B < M.B))

Объясните мне, пожалуйста, чем этот код лучше вот такого?

Код

select *
from SQUARE C, SQUARE M
where (C.L >= M.L) and (C.R <= M.R) and (C.T <= M.T) and (C.B >= M.B)


По мне, так здесь на одну операцию отрицания меньше.

animegirl, обратите внимание, что здесь мы пишем в традиционных координатах, а не в компьютерных с нулем вверху (как на моем рисунке).


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
baldina
Дата 24.9.2012, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 4
Всего: 101



Цитата(_Y_ @  24.9.2012,  17:34 Найти цитируемый пост)
 чем этот код лучше

просто он использует вышеупомянутую (им же) форму, а потому в данном контексте так понятнее
PM MAIL   Вверх
rodnover
Дата 24.9.2012, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 7.4.2009

Репутация: нет
Всего: 10



_Y_, В общем случае ничем. Один из законов логического преобразования. Главное, чтобы, что в том, что в другом случае, соблюдались условия:

Код

ML < MR, MB < MT
CL < CR, CB < CT

PM MAIL   Вверх
animegirl
Дата 26.9.2012, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Цитата(_Y_ @ 24.9.2012,  17:34)
Цитата(rodnover @ 24.9.2012,  17:22)
Код

select *
from SQUARE C, SQUARE M
where not ((C.L < M.L) or (C.R > M.R) or (C.T > M.T) or (C.B < M.B))

Объясните мне, пожалуйста, чем этот код лучше вот такого?

Код

select *
from SQUARE C, SQUARE M
where (C.L >= M.L) and (C.R <= M.R) and (C.T <= M.T) and (C.B >= M.B)


По мне, так здесь на одну операцию отрицания меньше.

animegirl, обратите внимание, что здесь мы пишем в традиционных координатах, а не в компьютерных с нулем вверху (как на моем рисунке).

Про координаты, я поняла, а вот про алгоритм не совсем, у вас там три раза И а у меня ( ИЛИ ) И ( ИЛИ )
Не могу понять, толи одна из формул не верна, толи вы ищите ПОЛНОЕ вхождение одной фигуры в другую, что не есть верно.


--------------------
Скажи миру - НЯ!
PM   Вверх
Akina
Дата 26.9.2012, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(animegirl @  26.9.2012,  16:52 Найти цитируемый пост)
толи вы ищите ПОЛНОЕ вхождение одной фигуры в другую, что не есть верно. 

Цитата(animegirl @  23.9.2012,  15:46 Найти цитируемый пост)
Надо найти входит ли второй в координаты первого.

WTF?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 26.9.2012, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(animegirl @  26.9.2012,  15:52 Найти цитируемый пост)
 у вас там три раза И а у меня ( ИЛИ ) И ( ИЛИ )
Не могу понять, толи одна из формул не верна, толи вы ищите ПОЛНОЕ вхождение одной фигуры в другую, что не есть верно. 

Три раза И - вхождение, три раза ИЛИ - невхождение.

Может вам не вхождение надо описывать, а наличие частичного пересечения фигур? Тогда все будет иначе, конечно, но это уже совсем другая задача.



--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
animegirl
Дата 28.9.2012, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Цитата(_Y_ @  26.9.2012,  22:22 Найти цитируемый пост)
Может вам не вхождение надо описывать, а наличие частичного пересечения фигур? Тогда все будет иначе, конечно, но это уже совсем другая задача.

Да, именно так, я не верно выразилась, вроде бы несколько раз поправлялась, но видимо всё равно не верно  smile 


--------------------
Скажи миру - НЯ!
PM   Вверх
Akina
Дата 28.9.2012, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(animegirl @  28.9.2012,  18:26 Найти цитируемый пост)
Да, именно так, я не верно выразилась

Так это в принципе другая задача....

Наличие пересечения по одной координате легко определяется значением (вернее, знаком) выражения (ML-CR)*(MR-CL), то же и по другой координате. Чтобы прямоугольники пересекались, должны пересекаться проекции по обеим осям одновременно.

Правда, если при вычислении выражения получен ноль, нельзя определить, это внешнее касание или внутреннее наложение.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 28.9.2012, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



animegirl, эту новую задачу тоже можно записать в Булевых выражениях. Но, в этом случае, Булевы условия будут гораздо длиннее того, что предложил Akina. Расписывать?

Можно еще сдалать что-нибудь неожиданно-глупо-оригинальное. Скорее всего, работающее гораздо медленнее, но, зато, прикольнее smile  Придумывать?


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
animegirl
Дата 6.10.2012, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



_Y_, Да, очень хочу посмотреть какие ещё есть варианты.
Цитата(Akina @  28.9.2012,  17:42 Найти цитируемый пост)
(ML-CR)*(MR-CL)

Не поняла, что это и как это  smile 


--------------------
Скажи миру - НЯ!
PM   Вверх
Akina
Дата 7.10.2012, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(animegirl @  6.10.2012,  22:45 Найти цитируемый пост)
Не поняла, что это и как это    

Что непонятно? где какая координата? или в каком порядке вычитать и умножать?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
_Y_
Дата 7.10.2012, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(animegirl @ 6.10.2012,  21:45)
Цитата(Akina @  28.9.2012,  17:42 Найти цитируемый пост)
(ML-CR)*(MR-CL)

Не поняла, что это и как это  smile

Если обе разности отрицательны или обе разности положительны, то результат положителен. Если одна отрицательна, другая положительна, то отрицателен. 

Давайте рассмотрим всемварианты по одной из осей. Во всех вариантах, естественно, ML < MR и CL < CR.
  • ML-CR > 0 значит внутренний прямоугольник слева от внешнего; MR-CL > 0 будет соблюдаться всегда раз уж он слева.
  • MR-CL < 0 значит внутренний прямоугольник справа от внешнего; ML-CR < 0 будет соблюдаться всегда раз уж он справа.
  • ML-CR < 0 левая сторона внешнего слева от правой стороны внутреннего; если  MR-CL > 0 значит внутренний внутри внешнего.
  • MR-CL < 0 и ML-CR > 0 сочетание в нашем мире невозможное.

Это выражение по одной из осей. Вам нужно рассматривать две (прямоугольник - двухмерная фигура), но принцип тот же. 

Про булев вариант позже распишу. Спать хоца




--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1234 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.