Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Рассмотрим два прямоугольника на координатной плоскости со сторонами параллельными осям координат. Требуется найти их пересечение или сообщить о его отсутствии. Как и в прошлой задаче, и точку, и отрезок будем считать частными случаями прямоугольника.
Исходные прямоугольники задаются координатами своей диагонали X1, Y1, X2, Y2, причем известно, что X1 < X2, а Y1 < Y2.
Решение.
Согласно методике последовательной детализации алгоритма, разобьем эту задачу на подзадачи. Заметим, что прямоугольник в пересечении существует, только если пересекаются проекции исходных прямоугольников по оси X и то же самое можно утверждать о проекциях на ось Y. Таким образом, удалось свести задачу к предыдущей. Необходимо оформить ранее написанный алгоритм «отрезки» в виде вспомогательного алгоритма с четырьмя параметрами. Аргументов должно быть именно четыре, поскольку ранее водилось четыре величины A, B, C, D.
алг отрезки (арг A, B, C, D, рез L, R)
Нач
L:= максимум (A, C)
R:= минимум (B, D)
Кон
Как правило, вспомогательные алгоритмы проектируются так, что они ничего не вводят и ничего не выводят. Все необходимые данные они получают через параметры, а результаты возвращают в вызывающий алгоритм.
Решение задачи о прямоугольниках.
алг прямоугольники
Нач
ввести AX1, AY1, AX2, AY2
ввести BX1, BY1, BX2, BY2
отрезки (AX1, AX2,BX1, BX2, A, B)
если A > B
товывести “Прямоугольники не пересекаются”
Иначе
отрезки (AY1, AY2,BY1, BY2, C, D)
если C > D
товывести “Прямоугольники не пересекаются”
иначевывести A, C, B, D
Все
Все
Кон
Дата публикования: 2014-11-03; Прочитано: 536 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!