Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск max S прямоугольника ограниченного прямой, поиск площади в прост-ве огранич отрезко 
:(
    Опции темы
Нэраварин
  Дата 14.12.2012, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток форумчане!
Прошу помощи в след. нестандартной задаче "по графике"

Требуется найти  максимальный по площади прямоугольник (и его  координаты верхнего левого и правого нижнего угла) со сторонами параллельными осям координат и размещающийся в другом наибольшем прямоугольнике, который не пересекает(возможно имеет общие точки) заданный отрезок A-B. 
user posted image
Наибольший прямоугольник(внутри которого рисуется линия и требуется найти другой прямоугольник ) задается переменными W,H, где W,H – ширина и высота в пикселах (начало координат – левый верхней угол окна), AX,AY, BX,BY – координаты вершин A и B отрезка.


Я даже не знаю с какой стороны подойти к задаче, smile  думаю, что нужно плясать от координат отрезка, но КАК осуществлять сам поиск(это основная загвоздка) координат углов прямоугольника причём таких чтобы этот прямоугольник был самым большим который только можно нарисовать в этой области я понять не могу  smile  smile 

 smile 

Это сообщение отредактировал(а) Нэраварин - 14.12.2012, 08:22
PM MAIL   Вверх
Akina
Дата 14.12.2012, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Задача элементарно решается аналитически.


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

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


Новичок



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

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



Цитата(Akina @  14.12.2012,  08:16 Найти цитируемый пост)
Задача элементарно решается аналитически. 

а по подробнее можно?

PM MAIL   Вверх
Akina
Дата 14.12.2012, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Поподробнее что? курс геометрии 8-го класса?


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

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


Новичок



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

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



Цитата(Akina @  14.12.2012,  08:31 Найти цитируемый пост)
Поподробнее что? курс геометрии 8-го класса? 

Эмм перечитайте пожалуйста мой первый пост повнимательнее...
PM MAIL   Вверх
Lipetsk
  Дата 14.12.2012, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


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

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



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

PM   Вверх
Нэраварин
Дата 14.12.2012, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Lipetsk @  14.12.2012,  08:48 Найти цитируемый пост)
если стороны обоих прямоугольников параллельны осям координат,

так оно и есть 

Цитата(Lipetsk @  14.12.2012,  08:48 Найти цитируемый пост)
так и будет -- один из углов искомого прямоугольника совпадает с углом большого прямоугольника


так как это вывести алгоритмически? может это и элементарные операции но что то я никак не догоняю до них после нескольких бессоных ночей....обрисуйте пожалуйста именно алгоритм нахождения координат угла искомого наибольшего по площади прямоугольника  smile 

Цитата(Lipetsk @  14.12.2012,  08:48 Найти цитируемый пост)
и тогда сторона меньшего прямоугольника проходит через конец отрезка


что вы имели в виду под "проходит"? если имеет общие точки то это допустимо если же пересекает хоть и слегка то это не допустимо!





PM MAIL   Вверх
Akina
Дата 14.12.2012, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Нэраварин @  14.12.2012,  09:35 Найти цитируемый пост)
перечитайте пожалуйста мой первый пост повнимательнее... 

Перечитал. Внимательно. Моё мнение не изменилось. Если не считать того, что необходимо рассмотреть три варианта (см. аттач).
Варианты 2 и 3 в расчёте тривиальны.
Что же до варианта 1... Координаты точек A,B,D - известны и фиксированы.
Задавая различные положения точки С, например, изменяя абсциссу Xc от Xa до Xb, и рассчитывая ординату как функцию абсциссы, получаем функцию зависимости площади прямоугольника задаваемого точками C и D от одной переменной Xc. Функция - квадратичная. Аналитически найти её максимум (а что это будет максимум - очевидно) - элементарно (формула должна просто от зубов отскакивать). И если этот максимум лежит в диапазоне от Xa до Xb, то это он и есть, а если за пределами - то максимумом в области определения будет ближайшая из границ диапазона. Остаётся посчитать значение функции (площади) в этой точке, сравнить с площадями по вариантам 2 и 3, и выбрать абсолютный максимум.


Присоединённый файл ( Кол-во скачиваний: 34 )
Присоединённый файл  1.gif 4,73 Kb


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

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


Новичок



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

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



В таком случае алгоритм обречён на большое количество проверок....если я всё правильно понял.
и скажите рисунок в формате гиф это случайность? или там всё таки должна быть анимация...
PM MAIL   Вверх
Akina
Дата 14.12.2012, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Нэраварин @  14.12.2012,  11:18 Найти цитируемый пост)
алгоритм обречён на большое количество проверок....

Четыре IF - это что, большое количество? 

Цитата(Нэраварин @  14.12.2012,  11:18 Найти цитируемый пост)
рисунок в формате гиф это случайность?

Нет. В этом формате рисунок получился наиболее компактным (без потери качества).


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

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


Эксперт
***


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

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



ИМХО решается самой тривиальной производной:
Координаты искомого угла прямоугольника X,Y. Координаты дального угла соответствуют ширине и высоте поля W,H. Тогда площадь прямоугольника будет произведением разностей и искаться будет максимум:
(W-X)*(H-Y)=max
Понятное дело, минусы-плюсы в этой формуле будут зависеть от заданной системы координат, но это уже точно младшешкольная геометрия - не будем распыляться.
Имеем также формулу наклонной прямой:
y=ax+b
Подставляем прямую:
(W-x)*(H-ax-b)=max
Ну а дальше ищем точку, в которой производная равна нулю smile 




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


Новичок



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

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



Большое спасибо всем за помощь, но что то я не разберусь как быть в таком случае?
user posted image

Да и вариант предложенный уважаемым Akina с перебором абсолютных максимумов не кажется мне удачным, возможно ли какое-либо другое, более лаконичное решение?
PM MAIL   Вверх
Akina
Дата 20.12.2012, 07:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Нэраварин @  20.12.2012,  03:57 Найти цитируемый пост)
как быть в таком случае?

Он ничем не отличается от исходного и от моего вар. 1.
Цитата(Нэраварин @  20.12.2012,  03:57 Найти цитируемый пост)
вариант предложенный уважаемым Akina с перебором абсолютных максимумов не кажется мне удачным

А куда ты денешься от проверки всех трёх вариантов...



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

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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