Страница 1 из 1
Коэффициент протяженности полигона.
Добавлено: 26 фев 2017, 17:16
xax_nv
Приветствую всех!
Коллеги, помогите найти алгоритм расчета коэффициента протяженности полигона, т.е. отношение средней длины к средней ширине. Что-то ничего сам придумать не смог.

Re: Коэффициент протяженности полигона.
Добавлено: 26 фев 2017, 20:18
gamm
xax_nv писал(а):Коллеги, помогите найти алгоритм расчета коэффициента протяженности полигона, т.е. отношение средней длины к средней ширине. Что-то ничего сам придумать не смог.
самый простой вариант - сносить каждый полигон на растр, и считать главные компоненты, отношение осей (корней из собственных чисел) даст примерно то, что нужно. Грубо говоря, делаем регулярную сетку точек (достаточно частую), фильтруем те, которые попали в полигон, и, рассматривая их как двумерную выборку, считаем ковариационную матрицу и главные оси (собственные вектора). Поскольку координат всего две, все считается явно и просто. Если полигон не свернут "улиткой", то ответ будет вполне приемлимый, это проверено - фактически, эт о результат аппроксимации полигона эллипсом, может и готовые функции такого рода есть.
Re: Коэффициент протяженности полигона.
Добавлено: 26 фев 2017, 20:32
xax_nv
gamm, спасибо за ответ!
Пока что мой старческий мозг не смог переварить всего, вот если бы примерчик...

Re: Коэффициент протяженности полигона.
Добавлено: 27 фев 2017, 20:36
gamm
xax_nv писал(а):вот если бы примерчик
питон с картинками
тыц, формулы в вики
тыц
Re: Коэффициент протяженности полигона.
Добавлено: 28 фев 2017, 13:17
Константин Г.
gamm писал(а):Если полигон не свернут "улиткой.
А если свернут, то можно просто делить площадь на квадрат периметра, чем не коэффициент? подскажу и пределы : (0; 1/ 4 / Pi]

Re: Коэффициент протяженности полигона.
Добавлено: 28 фев 2017, 14:28
xax_nv
А если не свернут, есть решение попроще, чем предложил gamm? Меня устроит даже приблизительное значение.
Re: Коэффициент протяженности полигона.
Добавлено: 28 фев 2017, 15:10
Константин Г.
Если приблизительно устроит - пожалуйста используйте вышеприведенную формулу.
Ну и если полигоном считать северную колбасу постоянной ширины, то очевидно, ее длина будет [периметр/2 - ширина] или [площадь / ширина]. Т.е. P/2 - L = S / L Отсюда находите и ширину и длину и их отношение. Но это для идеального случая.
Насчет решения gamm, мне кажется "сносить каждый полигон на растр" излишне. Есть готовые формулы для подсчета всех моментов полилинии. Но они больше помогут для вычисления "приближенного" экстента, если вас устроят его ширина и длина - вперед.
Re: Коэффициент протяженности полигона.
Добавлено: 28 фев 2017, 16:49
gamm
xax_nv писал(а):А если не свернут, есть решение попроще, чем предложил gamm? Меня устроит даже приблизительное значение.
1) если полигон более-менее представим эллипсом, то считаем то, что я написал.
2) Если полигон - "червяк", то считаем осевую (это можно сделать в векторе, называется скелетон), и пляшем от нее: если скелетон просто линия, то площадь есть примерно ее длина на среднюю ширину, если много веточек - то в векторе пытаемся их отрезать. Упрощенный вариант - в посте выше
3) Если полигон ни, ни другое (а типа корня имбиря), то ширина и длина лоя него не определены, считаем компактность из площади А и периметра Р (круглость или квадратность, кто что любит):
Код: Выделить всё
круглость = 2*sqrt(pi)*sqrt(A)/P
квадратность = 4*sqrt(A)/P
первая равна 1 для круга, вторая для квадрата. А если посмотреть Fragstats, то там можно найти еще 100500 разных индексов формы на любой вкус.
Re: Коэффициент протяженности полигона.
Добавлено: 28 фев 2017, 16:52
gamm
Константин Г. писал(а):Есть готовые формулы для подсчета всех моментов полилинии.
у нас не полилиния, а полигон произвольной формы, возможно с дырками, и многосвязный. Поэтому насчет готовых формул у меня большие сомнения.