計算任意多邊形的面積

2021-08-07 04:52:55 字數 1378 閱讀 7824

以三角形為例
設a(x1,y1),b(x2,y2),c(x3,y3)
由a-->b-->c-->a 按逆時針方向轉。 

設三角形的面積為s

則s=(1/2)*(下面行列式)

|x1 y1 1|

|x2 y2 1|

|x3 y3 1|

s=(1/2)*(x1y2*1+x2y3*1+x3y1*1-x1y3*1-x2y1*1-x3y2*1)

即用三角形的三個頂點座標求其面積的公式為:

s=(1/2)*(x1y2+x2y3+x3y1-x1y3-x2y1-x3y2)

多邊形如下:

設ω是m邊形

(如下圖

),頂點

沿邊界正向排列,

,座標依次為

建立ω的多邊形區域向量圖。

由圖知座標原點與多邊形任意相鄰的兩個頂點構成乙個三角形,而三角形的面積可由三個頂點構成的兩個平面向量的外積求得。

任意多邊形的面積公式

多邊形計算公式的計算和原點的選取沒有關係,通常可以選點(0,0)或者多邊形的

第乙個點(這個時候比較直觀了,看起來就是把多邊形分成乙個個三角形和加起來,讀者自己可以畫個圖)

就可以了。

//任意多邊形的面積計算

#include #include #include using std::cout;

using std::cin;

using std::endl;

typedef std::pairpoint;

#pragma warning(disable:4244)

double det(point p0, point p1, point p2)

double ploygon_area(int n, point p)

int main(int argc, char *argv)

points = (point *)malloc(n * sizeof(point));

for (i = 0; i> points[i].first >> points[i].second;

}s = ploygon_area(n, points);

cout << "the area is:" << s << std::endl;

if (points)

free(points);

return 1;

}

任意多邊形面積計算

任意多邊形的面積可由任意一點與多邊形上依次兩點連線構成的三角形向量面積求和得出。向量面積 三角形兩邊向量的叉乘。如下圖 按定理,多邊形面積由p點與a g的各頂點連線所構成的三角形向量面積構成,假定多邊形頂點座標順序為a g,逆時針為正方向,則有如下結論 pab,pbc,pcd均為順時針,面積為負 p...

任意多邊形面積

給定多邊形的頂點座標 有序 讓你來求這個多邊形的面積,你會怎麼做?我們知道,任意多邊形都可以分割為n個三角形,所以,如果以這為突破點,那麼我們第一步就是把給定的多邊形,分割為數個三角形,分別求面積,最後累加就可以了,把多邊形分割為三角形的方式多種多樣,在這裡,我們按照如下圖的方法分割 s點作為起始點...

任意多邊形面積的計算

原理論述1 書中給出定理 任意多邊形的面積可由任意一點與多邊形上依次兩點連線構成的三角形向量面積求和得出。向量面積 三角形兩邊向量的叉乘。如下圖 按定理,多邊形面積由p點與a g的各頂點連線所構成的三角形向量面積構成,假定多邊形頂點座標順序為a g,逆時針為正方向,則有如下結論 pab,pbc,pc...