Минимальный прямоугольник описывающий кривую
От: sbj Россия slava@ctm.ru
Дата: 03.05.06 12:28
Оценка:
Подскажите пожалуйста где искать/читать:
Есть кривая (массив точек).
Необходимо определить координаты минимального по площади прямоугольника описывающего
данную кривую и гол наклона этого прямоугольника относительно оси координат.
Re: Минимальный прямоугольник описывающий кривую
От: Кодт Россия  
Дата: 03.05.06 12:57
Оценка: 6 (1)
Здравствуйте, sbj, Вы писали:

sbj>Есть кривая (массив точек).

sbj>Необходимо определить координаты минимального по площади прямоугольника описывающего
sbj>данную кривую и гол наклона этого прямоугольника относительно оси координат.

Строим выпуклую оболочку этой кривой.
Поскольку она задана набором точек (скажем, N штук), то оболочка — это многоугольник (скажем, K-сторонний).
Находим описывающие прямоугольники, соосные поочерёдно каждой стороне оболочки. Среди них — ищем минимальный по площади.

O(N*log(N)) на построение оболочки.
O(K^2) для тупого перебора прямоугольников (для каждого за линейное время находим минимумы-максимумы координат вершин оболочки в повёрнутой системе координат). А если запоминать крайние вершины — то O(K).
Перекуём баги на фичи!
Re: Минимальный прямоугольник описывающий кривую
От: Аноним  
Дата: 03.05.06 13:33
Оценка:
Здравствуйте, sbj, Вы писали:

sbj>Подскажите пожалуйста где искать/читать:

sbj>Есть кривая (массив точек).
sbj>Необходимо определить координаты минимального по площади прямоугольника описывающего
sbj>данную кривую и гол наклона этого прямоугольника относительно оси координат.

Сначала ищем угол наклона, потом поворачиваем на него кривую и находим прямоугольник в горизонтальном положении

Как найти угол наклона, расписано, например, здесь
Автор:
Дата: 16.03.06
Re[2]: Минимальный прямоугольник описывающий кривую
От: Кодт Россия  
Дата: 04.05.06 20:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Сначала ищем угол наклона, потом поворачиваем на него кривую и находим прямоугольник в горизонтальном положении

А>Как найти угол наклона, расписано, например, здесь
Автор:
Дата: 16.03.06


Во-первых, там решалась другая задача: найти направление, в котором фигура "наиболее вытянута" (грубо говоря, это направление, в котором прямоугольная оболочка имеет наибольшее соотношение сторон; а точнее, это направление наибольшей оси эллипсоида инерции выпуклой оболочки).

Во-вторых, эти задачи даже близко не лежат. Контрпример: ромб. Наибольшая вытянутость — по диагонали, а наименьшая площадь — по стороне.

В-третьих, исходная задача имеет точное решение, а задача наибольшей вытянутости носит скорее эстетический характер.
Перекуём баги на фичи!
Re[3]: Минимальный прямоугольник описывающий кривую
От: Аноним  
Дата: 05.05.06 12:11
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Во-вторых, эти задачи даже близко не лежат. Контрпример: ромб. Наибольшая вытянутость — по диагонали, а наименьшая площадь — по стороне.


Согласен, конечно, контрпример с ромбом справедлив

К>В-третьих, исходная задача имеет точное решение, а задача наибольшей вытянутости носит скорее эстетический характер.


Конечно, такое решение не будет всегда точным, но для некоторых типов кривых вполне хорошо подойдет
Кроме того, оно быстрое, простое и красивое
Интересно было бы посмотреть, как ты будешь искать выпуклую оболочку для эллипса,
а потом полным перебором вокруг него бегать и считать площадь

Но в целом, конечно, выпад справедлив, признаю
Точное решение можно получить только полным перебором для выпуклой оболочки
Re: Минимальный прямоугольник описывающий кривую
От: Reunion  
Дата: 06.05.06 03:43
Оценка:
Здравствуйте, sbj, Вы писали:

sbj>Подскажите пожалуйста где искать/читать:

sbj>Есть кривая (массив точек).
sbj>Необходимо определить координаты минимального по площади прямоугольника описывающего
sbj>данную кривую и гол наклона этого прямоугольника относительно оси координат.

Если я правильно понял задачу, то вот тут посмотри мой пост и особенно ответ ilnar'а: http://www.rsdn.ru/Forum/Message.aspx?mid=1783044
Автор: Reunion
Дата: 15.03.06
Re: Минимальный прямоугольник описывающий кривую
От: DioNNis http://i-liger.com
Дата: 06.05.06 04:26
Оценка:
Здравствуйте, sbj, Вы писали:

sbj>Подскажите пожалуйста где искать/читать:

sbj>Есть кривая (массив точек).
sbj>Необходимо определить координаты минимального по площади прямоугольника описывающего
sbj>данную кривую и гол наклона этого прямоугольника относительно оси координат.

если я правильно понял, то так:
-ищем таксимальные и минимальные значения точек
-соединяем (max.x min,y) c (min.x min.y)
-соединяем (min.x min.y) с (min.x max x)
-соединяем (min.x max,y) c (max.x min.y)
а потом ищишь угол через отношение сторон....

ну в этом случае не всегда получиться меньший, поэтому придется еще анализировать просто значения других координат в точкач min и max
Владея информацией, владеешь миром. Уинстон Черчилль
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.