Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Задача : определить периметр

15K
03 декабря 2010 года
kant
64 / / 02.06.2007
Всем привет,
задача :
программа получает координаты прямоугольников, стороны прямоугольников параллельны с осами x и y. Некоторые прямоугольники могут перекрыватся, а задача заключается в том, чтобы найти периметр созданный этими прямоугольниками, внизу на изображении видно, как они могут быть примерно, и что необходимо найти, т.е. то что я должен найти означено красным цветом :

изображение 1 :
http://i006.radikal.ru/1012/7c/7e2fc47a3166.jpg

изображение 2 :
http://s42.radikal.ru/i096/1012/95/eb7e529dcd1e.jpg

Есть ли какой нибудь алгоритм решения этой задачи, я не прошу готовое решение, просто если кто нибудь решал подобную задачу скажите в каком направлении копать.
66K
03 декабря 2010 года
ArtemP
4 / / 03.12.2010
P=(max(x)-min(x))*2+(max(y)-min(y))*2

как то так..., с нахождением минимумов и максимумов проблем не должно возникнуть, ну и язык реализации выбери сам
15K
03 декабря 2010 года
kant
64 / / 02.06.2007
Цитата: ArtemP
P=(max(x)-min(x))*2+(max(y)-min(y))*2

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



Можно поподробнее про алгоритм, или под каким "псевдонимом" найти в гугл ?

66K
03 декабря 2010 года
ArtemP
4 / / 03.12.2010
Пардон, привел вариант решения для частного случая, когда все прямоугольники образуют единое целое ( как на картинке). Периметр прямоугольника, образованного кассательными к твоей фигуре равен периметру этой фигуры. Линейка, карандаш и лист бумаги помогут тебе в решении лучше гугла.
66K
03 декабря 2010 года
ArtemP
4 / / 03.12.2010
касательные к фигуре также паралельны осям
37K
03 декабря 2010 года
freets
97 / / 15.10.2010
задача только для 3-х прямоугольников?
15K
04 декабря 2010 года
kant
64 / / 02.06.2007
Цитата: freets
задача только для 3-х прямоугольников?



Нет, прямоугольников неопределенное количество.

5
04 декабря 2010 года
hardcase
4.5K / / 09.08.2005
Вариант номер 1: "Высокоуровнево" решение задачи можно описать следующим образом: любой (первый) прямоугольник принимаем взять за базовую фигуру, каждый следющий прямоугольник прибавлять к фигуре. Полученную в результате фигуру проверить на связность и посчитать периметр. В таком виде задача может быть решена с помощью API для регионов (в Win32 и .NET он есть).

Вариант номер 2: Используем алгоритм построения выпуклой оболочки над множеством точек, образующих вершины прямоугольников, с некоторой модификацией: диагональные ребра нужно трактовать как гипотенузы и использовать вместо них "вогнутые" катеты.
15K
04 декабря 2010 года
kant
64 / / 02.06.2007
Цитата: hardcase
Вариант номер 1: "Высокоуровнево" решение задачи можно описать следующим образом: любой (первый) прямоугольник принимаем взять за базовую фигуру, каждый следющий прямоугольник прибавлять к фигуре. Полученную в результате фигуру проверить на связность и посчитать периметр. В таком виде задача может быть решена с помощью API для регионов (в Win32 и .NET он есть).

Вариант номер 2: Используем алгоритм построения выпуклой оболочки над множеством точек, образующих вершины прямоугольников, с некоторой модификацией: диагональные ребра нужно трактовать как гипотенузы и использовать вместо них "вогнутые" катеты.



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

За второй варинт спасибо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог