![]() |
|
|
![]()
|
|
| V.A.KeRneL |
|
|||
![]() Vadim A. Kazantsev ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 3.12.2006 Где: Moscow, Russia Репутация: 1 Всего: 14 |
Всем доброго времени суток!
Помогите, пожалуйста, придумать алгоритм решения следующей геометрической задачи. Треугольник задан на плоскости координатами своих вершин: (X1, Y1), (X2, Y2), (X3, Y3). Найти длину L стороны квадрата минимальной площади, в который можно поместить этот треугольник так, чтобы все вершины треугольника находились внутри квадрата либо на его сторонах. Составьте программу, которая по координатам вершин треугольника находит длину L стороны квадрата минимальной площади, в который можно поместить этот треугольник. L достаточно найти с точностью 10^(-4), т.е. 0.0001. Это сообщение отредактировал(а) V_A_KeRneL - 18.12.2006, 20:06 -------------------- «C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы» ---/)/)---(\.../)---(\(\ --(':'=)---(=';'=)---(=':') (")(")..)-(").--.(")-(..(")(") |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
обсуждали мы как-то темку похожую: http://forum.vingrad.ru/topic-21917.html
там были разговоры про минимальный прямоугольник и разные критерии этой "минимальности" если я не ошибаюсь эта задача может быть сформулирована так же, если за критерий взять длину бОльшей стороны прямоугольника... -------------------- qqq |
|||
|
||||
| MBo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 10.6.2002 Репутация: 5 Всего: 18 |
Смещаешь треугольник так, чтобы одна вершина оказалась в начале координат (это для упрощения вычислений, можно еще повернуть, чтобы вторая вершина на ось легла)
Затем вращаешь треугольник вокруг начала координат, и в зависимости от угла поворота ищешь минимальное ребро описывающего квадрата со сторонами, параллельными осям координат (сторона квадрата - максимум из модулей разностей крайних точек по абсциссе и ординате) Вероятно, проще будет выделить случаи (диапазоны по углу), когда, например, точка A - правее всех, а B - выше и так далее Это сообщение отредактировал(а) MBo - 18.12.2006, 15:12 |
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Не правда. Перебор не сканает.
Задача наоптимизацию. Решать через производную. -------------------- Всем добра |
|||
|
||||
| MBo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 10.6.2002 Репутация: 5 Всего: 18 |
SoWa, а где упоминался перебор?
|
|||
|
||||
| SoWa |
|
|||
![]() Харекришна ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2422 Регистрация: 18.10.2004 Репутация: 6 Всего: 74 |
Не оно? -------------------- Всем добра |
|||
|
||||
| V.A.KeRneL |
|
|||
![]() Vadim A. Kazantsev ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 3.12.2006 Где: Moscow, Russia Репутация: 1 Всего: 14 |
2moderators: измените, пожалуйста, описание темы с «Квадрат, вписанный в треугольник» на «Треугольник, вписанный в квадрат». Обозвал неправильно по невнимательности, извиняюсь.
З.Ы. Спасибо.)) Это сообщение отредактировал(а) V.A.KeRneL - 20.1.2007, 04:17 -------------------- «C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы» ---/)/)---(\.../)---(\(\ --(':'=)---(=';'=)---(=':') (")(")..)-(").--.(")-(..(")(") |
|||
|
||||
| Pete |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 318 Регистрация: 5.1.2006 Где: Москва Репутация: 1 Всего: 12 |
Здорово! Курсач горит? Или опять с олимпиадными развлекаешься? -------------------- Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу) Не откладывай на завтра то, что можешь сделать сегодня. (Пословица) А теперь выпишем точное значение числа пи... (Препод) Жахни, Пендальф! © Гоблин |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Нетрудно доказать, что вершина треугольника на пересечении 2 более длинных сторон должна совпадать с вершиной квадрата, а остальные вершины треугольника - лежать на его сторонах. Либо длиннейшая сторона треугольника = диагонали квадрата (при этом угол между длинной и короткой сторонами будет не более 45 градусов).
Подход: Проверяем угол между длинной и короткой сторонами. Если он не более 45 градусов - диагональ квадрата = длинной стороне треугольника. Иначе смещаем треугольник так, чтобы вершина на пересечении длиннейших сторон легла в начало координат. Потом вращаем треугольник до тех пор, пока X одной вершины не станет равен Y второй вершины, их значения = длине стороны квадрата. Dixi -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| V.A.KeRneL |
|
|||
![]() Vadim A. Kazantsev ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 3.12.2006 Где: Moscow, Russia Репутация: 1 Всего: 14 |
Привет. Нет, я тебе уже говорил, что свой курсач сдал. И это не для олимпиады, хотя, имхо вполне олимпиадная геометрическая задача. Это курсовая кой-кого. З.Ы. Сказал бы лучше, что нибудь по теме, а то так просто оффтопик получился! -------------------- «C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы» ---/)/)---(\.../)---(\(\ --(':'=)---(=';'=)---(=':') (")(")..)-(").--.(")-(..(")(") |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |