Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Геометрическая задачкка, нужна помощь в написании алгоритма 
:(
    Опции темы
Левиафан
  Дата 24.10.2004, 14:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне вот дали задание написать алгоритм, а я что-то никак не врублю:
Цитата
Прямоугольник на плоскости задается 4-мя числами: a, b, c, d - координатами его вершин. Последовательно вводятся габариты n прямоугольников. В процессе ввода находить плоскость их пересечения, не запоминая самих габаритов.

Буду благодарен за помощь
  Вверх
maxim1000
Дата 24.10.2004, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



насколько я понимаю, имеются в виду только прямоугольники с вертикальными и горизонтальными сторонами

достаточно вспомнить, что пересечение нескольких множеств можно получить таким образом:
1. берем первое множество
2. находим его пересечение со вторым
3. находим пересечение результата (2) с третьим
... (и т.д.)
символически алгоритм можно записаить так:
X:=A1
X:=X&A2
X:=X&A3
...
X:=X&An
под X и A* имеются в виду прямоугольники
под & - пересечение (пересечение двух прямоугольников тоже является прямоугольником, если стороны вертикальны или горизонтальны)
таким образом, достаточно на каждом шаге знать координаты X и текущего прямоугольника...


--------------------
qqq
PM WWW   Вверх
redrick
Дата 25.10.2004, 03:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



имхо, тот, кто давал вам задание, не очень владеет математической терминологией или вы как то не точно сформулировали. Просто если все прямоугольники задаются на плоскости, то они пересекутся не по плоскости, а от силы по какому-то многоугольнику. Кроме того в начале говорится о координатах, а потом - о габаритах.

Вобщем попробуйте уточнить


--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
Akina
Дата 25.10.2004, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Пойди туда не знаю куда...

Левиафан
Давай сюда ТОЧНУЮ формулировку (а то бред какой-то) задания. И сразу уж копию справки о вменяемости автора задания...


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

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


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

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



Непонятно, почему четыре координаты, достаточно трех.
Но, как я понимаю, что стороны прямоугольников не обязательно параллельны осям.
Тогда хранить надо координаты фигуры пересечения предыдущей фигуры и очередного прямоугольника.


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
val
Дата 25.10.2004, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

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



ИМХО,
maxim1000 абсолютно прав. Ну а само пересечение двух прямоугольников можно запрограммировать путем анализа вершин каждого прямоугольника на их месторасположение внутри другого.


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
Левиафан
Дата 27.10.2004, 16:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(redrick @ 25.10.2004, 03:01)

имхо, тот, кто давал вам задание, не очень владеет математической терминологией или вы как то не точно сформулировали.

Да нет, я ее в точности переписал из методички. Так что совсем не понятно, да? Хреново.
Я вот спрошу у автора задачки и когда он обьяснит, выложу ответ. Может кому-то интересно...
  Вверх
Левиафан
Дата 27.10.2004, 16:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(val @ 25.10.2004, 12:12)

maxim1000 абсолютно прав. Ну а само пересечение двух прямоугольников можно запрограммировать путем анализа вершин каждого прямоугольника на их месторасположение внутри другого.

Чесно говоря я не совсем понял алгоритм maxim1000 и как провести этот анализ тоже...
  Вверх
Akina
Дата 27.10.2004, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата
я ее в точности переписал из методички
Кретинизм.
Цитата
Прямоугольник на плоскости задается 4-мя числами: a, b, c, d - координатами его вершин.
для задания прямоугольника нужны Х и У двух вершин и Х или У третьей - 5 чисел. Если же стороны параллельны осям координат - то тогда 4 числа.
Цитата
В процессе ввода находить плоскость их пересечения
пересечением ограниченных плоских фигур плоскость не может быть потому что не может быть никогда - "я не то что изобразить - представить не могу" (с) Василь Иваныч.

Попробую переформулировать задачу так чтобы она имела смысл:

УСЛОВИЕ
Цитата
Прямоугольник, стороны которого параллельны осям координат, на плоскости задается 4-мя числами: Х1, Х2, У1, У2 - координатами его вершин. Последовательно вводятся группы чисел, соответствующих координатам n прямоугольников. В процессе ввода находить координаты области их пересечения, не запоминая самих габаритов.

РЕШЕНИЕ
[code=]Пусть Хс1, Хс2, Ус1, Ус2 - координаты прямоугольника, являющегося областью пересечения на текущий момент, причем Хс1<Хс2 и Ус1<Ус2.
Вводятся координаты очередного прямоугольника Хо1, Хо2, Уо1, Уо2, причем Хо1<Хо2 и Уо1<Уо2.
Если существует область пересечения отрезков Хо1-Хо2 и Хс1-Хс2, то ее начальная точка = новому значению Хс1, конечная = новому значению Хс2. Если пересечение отрезков - одна точка, то область пересечения вырождается в отрезок. Если пересечения отрезков нет - область пересечения прямоугольников пуста, нет ее.
Точно так же поступаем с координатами по У.
Если область пересечения вырождена по обеим коордир\натам - она вырождается в точку.[/code]

Это сообщение отредактировал(а) Akina - 27.10.2004, 17:16


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

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


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Народ, что-то я читаю и торможжжжжу, скажите, прямоугольники лежат в той же плоскости?


--------------------
Теперь при чем :P
PM   Вверх
Alex101
Дата 27.10.2004, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

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



Чисто логически задача несложная. Надо запоминать точки пересечения текущей фигуры (на втором шаге будет первый прямоугльник) и очередного прямоугольника. Понятно, что для этого надо находить точки пересечения линий. Каждая сторона фигуры лежит на линии. Что-то мне подсказывает (может и ошибаюсь), что максимальное количество углов у конечной фигуры N*4, где N - количество прямоугольников. Видимо, потому что каждая сторона прямоугольника не может пересечь более двух сторон многоугольника (или совпадать с ней), грубо говоря, вместо одного угла может сделать максимум 2.
Надо хранить координаты имеющейся фигуры, далее найти точки пересечения сторон очередного прямоугольника со сторонами фигуры (если сторона не пересекает, то надо выяснить, где она проходит), запомнить новые точки.
Потом вычислить площадь уже несложно.

Так что вся сложность состоит в аккуратном рассмотрении всех случаев и в грамотной структуре данных.

Посмотри здесь

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


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Ignat
Дата 27.10.2004, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



Цитата

В процессе ввода находить плоскость их пересечения

Поясните, кто нибудь... Я ни хрена не понимаю... Что это за пересечение такое?


--------------------
Теперь при чем :P
PM   Вверх
Akina
Дата 27.10.2004, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Ignat
Да бред, говорю же...


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

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


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

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



Цитата(Ignat @ 27.10.2004, 14:44)
Цитата

В процессе ввода находить плоскость их пересечения

Поясните, кто нибудь... Я ни хрена не понимаю... Что это за пересечение такое?

Я думаю, тут элементарная описка (может и преподавателя).
Имелась в виду ПЛОЩАДЬ.


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
Левиафан
Дата 28.10.2004, 17:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Alex101 @ 28.10.2004, 10:20)

Имелась в виду ПЛОЩАДЬ.

Переведено дословно с украинского "площина"
  Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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