Представьте, что у вас есть многоугольник, определенный набором координат и его центр масс находится в . Вы можете рассматривать полигон как равномерное распределение с полигональной границей.
Мне нужен метод, который найдет ковариационную матрицу многоугольника .
Я подозреваю, что ковариационная матрица многоугольника тесно связана со вторым моментом площади , но я не уверен, эквивалентны ли они. Формулы, найденные в статье в Википедии, которую я связал, кажутся (наверное, из статьи мне это не особо понятно) относятся к инерции вращения вокруг осей x, y и z, а не к главным осям многоугольника.
(Кстати, если кто-нибудь может указать мне, как рассчитать главные оси многоугольника, это также будет полезно для меня)
Соблазнительно просто выполнить PCA по координатам , но при этом возникает проблема, заключающаяся в том, что координаты не обязательно равномерно распределены по многоугольнику и, следовательно, не отражают плотность многоугольника. Экстремальным примером является контур Северной Дакоты, полигон которого определяется большим количеством точек, следующих за Красной рекой, плюс только еще две точки, определяющие западный край штата.
источник
Ответы:
Давайте сначала проведем некоторый анализ.
Предположим, что внутри многоугольника его плотность вероятности пропорциональна функции Тогда константа пропорциональности является обратной величиной от интеграла по многоугольнику,P p(x,y). p
Барицентр многоугольника является точкой средних координат, вычисленных как их первых моментов. Первый из них
Тензор инерции может быть представлена в виде симметричной матрицы вторых моментов , вычисленных после перевода многоугольника поставить свой барицентр в начале координат: то есть матрица центральных моментов второго
где составляет от до до Сам тензор - он же ковариационная матрица - это(k,l) (2,0) (1,1) ( 0 , 2 ) .
РС из дает главную ось из эти единичные собственные векторы , масштабированные их собственных значений.я( P) П :п:
Далее давайте разберемся, как делать расчеты. Поскольку многоугольник представлен в виде последовательности вершин, описывающих его ориентированную границу естественно вызывать∂п,
Например, с и постоянной ( то есть равномерной) плотностью мы можем (осмотром) выбрать один из множества решения, такие какd ω= xКYLд х д у р , ω(x,y)=−1l+1xkyl+1dx.
Дело в том, что контурный интеграл следует отрезкам, определяемым последовательностью вершин. Любой отрезок прямой от вершины до вершины может быть параметризован действительной переменной в формеu v t
где - это единичное нормальное направление от доСледовательно, значения варьируются от до При этой параметризации и являются линейными функциями от а и являются линейными функциями от Таким образом, подынтегральное выражение интеграла контура по каждому ребру становится полиномиальной функцией от которая легко вычисляется для малых иw∝v−u u v. t 0 |v−u|. x y t dx dy dt. т , к л .t, k l.
Реализация этого анализа так же проста, как и кодирование его компонентов. На нижнем уровне нам понадобится функция для интегрирования полиномиальной формы на отрезке прямой. Функции более высокого уровня агрегируют их для вычисления необработанных и центральных моментов, чтобы получить барицентр и инерционный тензор, и, наконец, мы можем оперировать этим тензором, чтобы найти главные оси (которые являются его масштабированными собственными векторами).
R
Ниже код выполняет эту работу. Он не претендует на эффективность: он предназначен только для иллюстрации практического применения вышеизложенного анализа. Каждая функция проста, а соглашения об именах параллельны соглашениям анализа.В код включена процедура для генерации допустимых замкнутых, односвязных, несамопересекающихся многоугольников (путем случайного деформирования точек вдоль окружности и включения начальной вершины в качестве конечной точки для создания замкнутого контура). Далее следуют несколько утверждений для построения многоугольника, отображения его вершин, примыкания к центру барицентра и построения главных осей в красном (наибольшем) и синем (наименьшем) виде, создавая ориентированную на многоугольник положительно ориентированную систему координат.
источник
Изменить: не заметил, что Whuber уже ответил. Я оставлю это как пример другого (возможно, менее изящного) подхода к проблеме.
Ковариационная матрица
Пусть случайная точка из равномерного распределения на многоугольник с площадью . Ковариационная матрица имеет вид:(X,Y) P A
где - дисперсия , - дисперсия , а - ковариация между и . Это предполагает нулевое среднее значение, так как центр масс многоугольника находится в начале координат. Равномерное распределение назначает постоянную плотность вероятности каждой точке в , поэтому:CXX=E[X2] X CYY=E[Y2] Y CXY=E[XY] Икс Y 1A п
триангуляция
Вместо того, чтобы пытаться напрямую интегрироваться в сложную область, такую как , мы можем упростить задачу, разбив на треугольных областей:п п N
В вашем примере одно из возможных разделов выглядит следующим образом:
Существуют различные способы создания триангуляции (см. Здесь ). Например, вы можете вычислить триангуляцию Делоне для вершин, а затем отбросить ребра, которые выходят за пределы (поскольку это может быть невыпуклым, как в примере).п
Интегралы по можно затем разбить на суммы интегралов по треугольникам:п
Треугольник имеет красивые простые границы, поэтому эти интегралы легче оценить.
Интегрирование по треугольникам
Существуют различные способы объединения по треугольникам. В этом случае я использовал трюк, который включает в себя отображение треугольника на единицу площади. Преобразование в барицентрические координаты может быть лучшим вариантом.
Ниже приведены решения для приведенных выше интегралов для произвольного треугольника определенного вершинами . Позволять:T ( х1, у1) , ( х2, у2) , ( х3, у3)
Затем:
Собираем все вместе
Пусть и содержат координаты x / y вершин для каждого треугольника , как указано выше. Вставьте в для каждого треугольника, отметив, что условия области отменяются. Это дает решение:vяИкс vяY Tя ( 3 ) ( 2 )
Главные оси
Главные оси задаются собственными векторами ковариационной матрицы , как и в PCA. В отличие от PCA, у нас есть аналитическое выражение для , вместо того, чтобы оценивать его по выборочным точкам данных. Обратите внимание, что сами вершины не являются репрезентативной выборкой из равномерного распределения на , поэтому нельзя просто взять выборочную ковариационную матрицу вершин. Но * является * относительно простой функцией вершин, как видно из .С С п С ( 4 )
источник