![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 06.07.2010
Сообщений: 105
|
![]()
Помогите додумать!
Условие: Можнои ли кирпич со сторонами a,b,c втиснуть в прямоугольное отверстие сторонами e,d. Если нет, вывести сообщение. Если да, то как именнно. На первый примитивный взгляд получаем след. варианты: Боковой впих: 1)b<=e;c<=d 2)b<=e;a<=d Фронтальный впих: 1)a<=e;c<=d; 2)c<=e;a<=d Высокий впих(т.е. поставить кирпич на меньший прямоугольник, как бы поставить на ногу): 1)с<=e;b<=d 2)a<=e;b<=d Диагональный впих(впихивать по диагонали отверстия) 1)(b^2+c^2)<(d^2+e^2); (вот как тут учесть ширину кирпича ведь ушки прямоугольника отверстия могут мешать некоторому диапозону впихов) 2)(a^2+b^2)<(d^2+e^2); Если у кого-то есть рациональные идейки или красивые варианты реализации, мб вы сталкивались с такой задачей, буду очень благодарен за совет, ибо мне кажется есть еще варианты, но мне хотя бы понять как учесть последний. Извените, если где написал неточность, потому что уже больше 2 суток не спал, а срочно нужно закрыть паскаль. Вроде бы задача не сложная, но мне настойчиво обещали тут подводные камни, вот решил узнать у профи какие они тут. Заранее благодарю.
Carpe Diem
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]() ![]() Лично у меня такое получилось. Решив систему уранений, найдём b2 и a1. Их сумма даст минимальную высоту при заданной ширине W. Если высота отверстия меньше минимальной, значит не пройдёт. Ну и там несколько вариантов подбора, имхо, их проще все перебрать, не так уж их и много. Ну или придумать эвристику.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
Последний раз редактировалось veniside; 06.09.2011 в 07:17. |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]() Цитата:
![]() ![]() Не нужно никаких "диагональных впихов" (а по-нашему - кривых). Вам что - ни разу не приходилось проносить шкаф в дверь?.. Вы правда что ли его для этого наклоняете?.. Но ведь при наклоне обе проекции увеличиваются! Все очень просто, никаких подводных камней тут нет. Сделать нужно следующее: 1. Найти максимальный размер кирпича и "отбросить" его. С этого момента задача из пространственной превращается в плоскую (можно ли прямоугольник вложить в другой прямоугольник). 2. Упорядочить стороны кирпича и отверстия, то есть чтоб a<=b и e<=d. 3. Если выполняются ОБА условия: a<=e и b<=d - то ДА, можно протащить. Если хоть одно не выполняется - НЕТ, нельзя. Вот и все )). Где-то я уже решал подобную задачу.. сейчас поищу..
Предпочитаю на "ты".
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> сейчас поищу
не трудитесь, лучше помедитируйте 5 минут над картинкой: ![]()
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 869
|
![]()
хватило 0.5 сек ))
мои глубочайшие извинения и уважение! ![]() + veniside и + топикстартеру
Предпочитаю на "ты".
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
шкафы, они разные бывают. И двери тоже )
У меня есть ещё смутные подозрения, что кирпич можно наклонять и в третьей плоскости, и протаскивать не только вглубь (по оси Z), но и со смещением по осям Х и Y. Тогда его проекция на отверстие не будет прямоугольной. Но хочется надеяться, что это только ухудшит дело, хотя доказать я это не берусь.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
veniside, извините, а ведь TinMan был прав со своим изначальным замечанием..
Цитата:
нужно через "дырку в заборе" этот кирпич просунуть... Добавлено я уже сам понял, что я был неправ... сорри! Последний раз редактировалось Serge_Bliznykov; 08.09.2011 в 11:47. |
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Сергей, чорный квадрат на моей картинке — это и есть отверстие (дырка в заборе). Красное — это кирпич-анорексик, который просовывают в отверстие.
Считаем, что третье измерение у кирпича ещё больше (кирпич похож на длинный, узкий лист фанеры), так что мы его отбросили. При чём тут ниша?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
Последний раз редактировалось veniside; 08.09.2011 в 11:49. |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
veniside, угу. согласен.
моё сообщение "провисело" на форуме всего пару минут... потом я понял свою ошибку и удалил свой пост (теперь пришлось восстановить...). Однако Вы его успели прочитать и ответить на него. Приношу свои извинения. |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
Да ерунда, а задачка действительно прикольная. Я сам поломал голову, пока не понял, что треугольники (a, a1, a2) и (b, b1, b2) подобны. Без этого система уравнений была неполная.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С++. Геометрическая задача. | student71 | Помощь студентам | 0 | 11.05.2011 01:28 |
Геометрическая задача | Liza Dalbek | Помощь студентам | 2 | 22.12.2010 19:48 |
ГЕОМЕТРИЧЕСКАЯ ЗАДАЧА С++ | kochet-kov | Помощь студентам | 8 | 22.12.2010 18:39 |
Геометрическая задача С++ | bloo[d] | Общие вопросы C/C++ | 9 | 30.01.2008 18:27 |