Matlab: найти площадь, заключенную в точки (x, y)

У меня есть 8 точек, которые создают контур восьмиугольника в двумерном пространстве. Мне нужно найти область, заключенную в этих точках, но как мне это сделать с помощью Matlab?

Восемь точек (x,y) содержатся в матрице 8x2 B.

B = [ 260 455;
    1187 467;
    1325 605;
    1342 1533;
    1207 1675
    251 1690;
    107 1547;
    116 593];

Многоугольник создается путем рисования прямых линий из точки, которая является строкой 1 в строку 2, затем строку 2 в строку 3 и так далее...


person user2200676    schedule 22.03.2013    source источник
comment
сначала создайте маску с помощью roipoly, а затем найдите область с помощью bwarea   -  person Autonomous    schedule 23.03.2013
comment
@Parag - это может быть довольно неэффективно, если числа большие. Это также будет неточным в некоторых случаях, особенно когда лучший ответ - использовать полиплощадь - настолько тривиален.   -  person    schedule 23.03.2013


Ответы (3)


Вы можете использовать polyarea:

ar = polyarea(B(:, 1), B(:, 2));
person 3lectrologos    schedule 22.03.2013
comment
Есть много возможных решений этого вопроса, но я думаю, что это наиболее эффективное, так как это встроенная функция, которая делает точно то, что задал OP. - person Floris; 23.03.2013

Я бы выбрал трапецию:

Area = trapz(B(:,1),B(:,2));
person fpe    schedule 22.03.2013

Для расчета площади и даже объема вы можете использовать convhull.

person Alexander Danilin    schedule 02.07.2014