IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помещается ли один прямоугольник в другой
сообщение
Сообщение #1


Гость






Как определить, помещается ли прямоугольник A*B в прямоугольник С*D, если можно их поворачивать?
Например, 5*1 помещается в 5*1, 6*3, 4.3*4.3, но не помещается в 4*1, 10*0.5, 4.2*4.2.
Заранее спасиб всем, кто поможет.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


думаю, сначала надо повернуть оба прямоугольника вертикально (т.е. поменять стороны местами, если нужно), далее:
1) если A>C, сразу выход - никак не войдет
2) если B<=D, тоже выход - вошёл и без поворотов
3) определяем минимальный необходимый угол поворота - точнее его косинус - просто поделив D на B - под этим углом прямоугольник влезает хотя бы по вертикали
4) складываем проекции сторон (B*sin+A*cos) - и сравниваем с C
собственно, всё... программа нужна ?

PS: кстати, получается, что 5x1 влазит в 4.3x3.4 (примерно)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






На сколько я понял пряпугольники в 2D, следовательно возьми не сравнивая их площади, а сравни их стороны. Есле одна из сторон основного прямоугольника меньше одной из сторон доугого(который должен войти или не войти) то второй не войдёт в основной wink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






P@sh@, по-моему, все бы оно хорошо, но предлагаемый способ определения косинуса угла подходит не для прямоугольника, а для отрезка. Если я не так поняла, объясните, pls, еще раз.

Есть у меня некоторая идея. Если прямоугольник1 помещается в 2, то периметр2>=периметр1. В обратную сторону это утверждение не всегда действует.
Может быть тогда добавить условие: если хотя бы одна сторона прямоугольника 2 меньше обеих сторон прямоугольника 1, то 1 не помещается в 2.
Как думаете, хватает этих условий?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


да, действительно, не довел мысль до конца, еще подумаю
Насчет периметров фиг знает, доказать бы как-то надо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


поворачивать надо не сторону, а диагональ(так же, поделив D на нее), и проекции складывать три, а не две, т.е. удвоенная проекция малой стороны+проекция диагонали
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Насчет периметров доказывается через неравенство треугольника: сумма двух сторон больше третьей. Сотавляются по одному неравенству для четырех треугольников(которые отсекает маленький прямоугольник в большом), причем третьей стороной берется та, которая принадлежит маленькому прямоугольнику. Все это скаладывается и получается, что периметр маленького меньше периметра большого.  
Зря нельзя картинку прилепить, понятнее было бы и обьяснять легче...и спрашивать тоже...

Угол поворота диагонали к основанию не равен углу между меньшей стороной и вертикалью.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 180
Пол: Мужской

Репутация: -  2  +


Угол поворота диагонали к основанию не равен углу между меньшей стороной и вертикалью.
значит надо еще вычислить угол между диагональю и B и добавить его к повороту
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

Репутация: -  4  +


Каритнку прилепить можно, только выкладывать нужно на своей страничке (если есть)


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата(P@sh@ @ 10.02.2004 16:00) *

думаю, сначала надо повернуть оба прямоугольника вертикально (т.е. поменять стороны местами, если нужно), далее:
1) если A>C, сразу выход - никак не войдет
2) если B<=D, тоже выход - вошёл и без поворотов
3) определяем минимальный необходимый угол поворота - точнее его косинус - просто поделив D на B - под этим углом прямоугольник влезает хотя бы по вертикали
4) складываем проекции сторон (B*sin+A*cos) - и сравниваем с C
собственно, всё... программа нужна ?

PS: кстати, получается, что 5x1 влазит в 4.3x3.4 (примерно)

 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.10.2024 18:56
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name