輸入乙個點列,順序連線成乙個封閉多邊形,計算多邊形的面積。
思路:求多邊形的面積可以使用叉乘求面積。設多邊形有n個頂點,用陣列將其存起來,其餘各點均與第乙個點連起來,這樣從逆時針方向來看,每兩個點構成乙個三角形,在使用叉乘來求的面積。有一點需要明確一下,每一次使用叉乘求面積,不能加絕對值,因為每一步叉乘求面積求得的是有向面積,將所有的有向面積加和所求的就是該多邊形的面積,這種方法不僅適用於凸多邊形,同時也適用於凹多邊形。
(由於輸入點的順序是 「 逆時針 」,所以如果是順時針輸入的話,就會出現負數的情況,所以在優化的時候,給結果加入了乙個絕對值即可)
1 #include 2 #include 3 #include 4 #include 5using
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點作為起始點...