Коэффициент протяженности полигона.
- xax_nv
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 26 фев 2017, 17:13
- Репутация: 0
Коэффициент протяженности полигона.
Приветствую всех!
Коллеги, помогите найти алгоритм расчета коэффициента протяженности полигона, т.е. отношение средней длины к средней ширине. Что-то ничего сам придумать не смог.
Коллеги, помогите найти алгоритм расчета коэффициента протяженности полигона, т.е. отношение средней длины к средней ширине. Что-то ничего сам придумать не смог.
-
- Гуру
- Сообщения: 4058
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1055
- Ваше звание: программист
- Откуда: Казань
Re: Коэффициент протяженности полигона.
самый простой вариант - сносить каждый полигон на растр, и считать главные компоненты, отношение осей (корней из собственных чисел) даст примерно то, что нужно. Грубо говоря, делаем регулярную сетку точек (достаточно частую), фильтруем те, которые попали в полигон, и, рассматривая их как двумерную выборку, считаем ковариационную матрицу и главные оси (собственные вектора). Поскольку координат всего две, все считается явно и просто. Если полигон не свернут "улиткой", то ответ будет вполне приемлимый, это проверено - фактически, эт о результат аппроксимации полигона эллипсом, может и готовые функции такого рода есть.xax_nv писал(а):Коллеги, помогите найти алгоритм расчета коэффициента протяженности полигона, т.е. отношение средней длины к средней ширине. Что-то ничего сам придумать не смог.
- xax_nv
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 26 фев 2017, 17:13
- Репутация: 0
Re: Коэффициент протяженности полигона.
gamm, спасибо за ответ!
Пока что мой старческий мозг не смог переварить всего, вот если бы примерчик...
Пока что мой старческий мозг не смог переварить всего, вот если бы примерчик...
-
- Гуру
- Сообщения: 4058
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1055
- Ваше звание: программист
- Откуда: Казань
-
- Интересующийся
- Сообщения: 29
- Зарегистрирован: 19 окт 2012, 13:52
- Репутация: 2
Re: Коэффициент протяженности полигона.
А если свернут, то можно просто делить площадь на квадрат периметра, чем не коэффициент? подскажу и пределы : (0; 1/ 4 / Pi]gamm писал(а):Если полигон не свернут "улиткой.
- xax_nv
- Новоприбывший
- Сообщения: 3
- Зарегистрирован: 26 фев 2017, 17:13
- Репутация: 0
Re: Коэффициент протяженности полигона.
А если не свернут, есть решение попроще, чем предложил gamm? Меня устроит даже приблизительное значение.
-
- Интересующийся
- Сообщения: 29
- Зарегистрирован: 19 окт 2012, 13:52
- Репутация: 2
Re: Коэффициент протяженности полигона.
Если приблизительно устроит - пожалуйста используйте вышеприведенную формулу.
Ну и если полигоном считать северную колбасу постоянной ширины, то очевидно, ее длина будет [периметр/2 - ширина] или [площадь / ширина]. Т.е. P/2 - L = S / L Отсюда находите и ширину и длину и их отношение. Но это для идеального случая.
Насчет решения gamm, мне кажется "сносить каждый полигон на растр" излишне. Есть готовые формулы для подсчета всех моментов полилинии. Но они больше помогут для вычисления "приближенного" экстента, если вас устроят его ширина и длина - вперед.
Ну и если полигоном считать северную колбасу постоянной ширины, то очевидно, ее длина будет [периметр/2 - ширина] или [площадь / ширина]. Т.е. P/2 - L = S / L Отсюда находите и ширину и длину и их отношение. Но это для идеального случая.
Насчет решения gamm, мне кажется "сносить каждый полигон на растр" излишне. Есть готовые формулы для подсчета всех моментов полилинии. Но они больше помогут для вычисления "приближенного" экстента, если вас устроят его ширина и длина - вперед.
-
- Гуру
- Сообщения: 4058
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1055
- Ваше звание: программист
- Откуда: Казань
Re: Коэффициент протяженности полигона.
1) если полигон более-менее представим эллипсом, то считаем то, что я написал.xax_nv писал(а):А если не свернут, есть решение попроще, чем предложил gamm? Меня устроит даже приблизительное значение.
2) Если полигон - "червяк", то считаем осевую (это можно сделать в векторе, называется скелетон), и пляшем от нее: если скелетон просто линия, то площадь есть примерно ее длина на среднюю ширину, если много веточек - то в векторе пытаемся их отрезать. Упрощенный вариант - в посте выше
3) Если полигон ни, ни другое (а типа корня имбиря), то ширина и длина лоя него не определены, считаем компактность из площади А и периметра Р (круглость или квадратность, кто что любит):
Код: Выделить всё
круглость = 2*sqrt(pi)*sqrt(A)/P
квадратность = 4*sqrt(A)/P
Последний раз редактировалось gamm 28 фев 2017, 17:01, всего редактировалось 3 раза.
-
- Гуру
- Сообщения: 4058
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1055
- Ваше звание: программист
- Откуда: Казань
Re: Коэффициент протяженности полигона.
у нас не полилиния, а полигон произвольной формы, возможно с дырками, и многосвязный. Поэтому насчет готовых формул у меня большие сомнения.Константин Г. писал(а):Есть готовые формулы для подсчета всех моментов полилинии.
Кто сейчас на конференции
Сейчас этот форум просматривают: kad3 и 2 гостя