求任意多邊形的面積

2022-03-01 07:57:53 字數 772 閱讀 4550

輸入乙個點列,順序連線成乙個封閉多邊形,計算多邊形的面積。

思路:求多邊形的面積可以使用叉乘求面積。設多邊形有n個頂點,用陣列將其存起來,其餘各點均與第乙個點連起來,這樣從逆時針方向來看,每兩個點構成乙個三角形,在使用叉乘來求的面積。有一點需要明確一下,每一次使用叉乘求面積,不能加絕對值,因為每一步叉乘求面積求得的是有向面積,將所有的有向面積加和所求的就是該多邊形的面積,這種方法不僅適用於凸多邊形,同時也適用於凹多邊形。

(由於輸入點的順序是 「 逆時針 」,所以如果是順時針輸入的話,就會出現負數的情況,所以在優化的時候,給結果加入了乙個絕對值即可)

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;67

const

int maxn = 105;8

9struct

nodepoint[maxn];

1213

intmain()

22int i = 1;23

double ans = 0;24

double cx = 0;25

while (i < n - 1

)34 ans =fabs(ans);

35 printf("

%.1lf\n

", ans);36}

37 system("

pause");

38return0;

39 }

求任意多邊形面積

首先宣告乙個概念 三角形外積 把向量外積定義為 a b a b sin a,b 方向根據右手法則確定,就是手掌立在a b所在平面的向量a上,掌心向b,那麼大拇指方向就是垂直於該平面的方向,被規定為外積 的方向。又根據三角形的面積公式 s 0.5 a b sin s 0.5 a b 上書中給出定理 任...

任意多邊形面積

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

任意多邊形的面積

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