Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Алгоритмы, C] Геометрическая задача, «Треугольник, вписанный в квадрат» 
:(
    Опции темы
V.A.KeRneL
Дата 18.12.2006, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
maxim1000
Дата 18.12.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



обсуждали мы как-то темку похожую: http://forum.vingrad.ru/topic-21917.html
там были разговоры про минимальный прямоугольник и разные критерии этой "минимальности"
если я не ошибаюсь эта задача может быть сформулирована так же, если за критерий взять длину бОльшей стороны прямоугольника...


--------------------
qqq
PM WWW   Вверх
MBo
Дата 18.12.2006, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Смещаешь треугольник так, чтобы одна вершина оказалась в начале координат (это для упрощения вычислений, можно еще повернуть, чтобы вторая вершина на ось легла)

Затем вращаешь треугольник вокруг начала координат, и в зависимости от угла поворота ищешь минимальное ребро описывающего квадрата со сторонами, параллельными осям координат (сторона квадрата - максимум из модулей разностей крайних точек по абсциссе и ординате)
Вероятно, проще будет выделить случаи (диапазоны по углу), когда, например, точка A - правее всех, а B - выше и так далее

Это сообщение отредактировал(а) MBo - 18.12.2006, 15:12
PM MAIL   Вверх
SoWa
Дата 18.12.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

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



Не правда. Перебор не сканает.
Задача наоптимизацию. Решать через производную.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
MBo
Дата 18.12.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



SoWa,  а где упоминался перебор?
PM MAIL   Вверх
SoWa
Дата 18.12.2006, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

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



Цитата(MBo @  18.12.2006,  15:07 Найти цитируемый пост)
Смещаешь треугольник так, чтобы одна вершина оказалась в начале координат (это для упрощения вычислений, можно еще повернуть, чтобы вторая вершина на ось легла)

Затем вращаешь треугольник вокруг начала координат, и в зависимости от угла поворота ищешь минимальное ребро описывающего квадрата со сторонами, параллельными осям координат (сторона квадрата - максимум из модулей разностей крайних точек по абсциссе и ординате)
Вероятно, проще будет выделить случаи (диапазоны по углу), когда, например, точка A - правее всех, а B - выше и так далее

Не оно?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
V.A.KeRneL
Дата 18.12.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
Pete
Дата 19.12.2006, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(V_A_KeRneL @  18.12.2006,  14:24 Найти цитируемый пост)
Треугольник задан на плоскости...

Здорово! Курсач горит? Или опять с олимпиадными развлекаешься?  smile 


--------------------
Совет учиться на ошибках других бесполезен; научиться чему-либо можно только на собственных ошибках. (Бернард Шоу)
Не откладывай на завтра то, что можешь сделать сегодня. (Пословица)
А теперь выпишем точное значение числа пи... (Препод)
Жахни, Пендальф! © Гоблин
PM   Вверх
Akina
Дата 19.12.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Нетрудно доказать, что вершина треугольника на пересечении 2 более длинных сторон должна совпадать с вершиной квадрата, а остальные вершины треугольника - лежать на его сторонах. Либо длиннейшая сторона треугольника = диагонали квадрата (при этом угол между длинной и короткой сторонами будет не более 45 градусов).

Подход:

Проверяем угол между длинной и короткой сторонами. Если он не более 45 градусов - диагональ квадрата = длинной стороне треугольника.
Иначе смещаем треугольник так, чтобы вершина на пересечении длиннейших сторон легла в начало координат. Потом вращаем треугольник до тех пор, пока X одной вершины не станет равен Y второй вершины, их значения = длине стороны квадрата. 

Dixi


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

PM MAIL WWW ICQ Jabber   Вверх
V.A.KeRneL
  Дата 19.12.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

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



Цитата(Pete @  19.12.2006, 09:23 Найти цитируемый пост)

Здорово! Курсач горит? Или опять с олимпиадными развлекаешься?  smile


Привет. Нет, я тебе уже говорил, что свой курсач сдал. И это не для олимпиады, хотя, имхо вполне олимпиадная геометрическая задача. Это курсовая кой-кого. smile

З.Ы. Сказал бы лучше, что нибудь по теме, а то так просто оффтопик получился!



--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

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

maxim1000

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


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

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


 




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


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

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