平面內多邊形的計算,也就是平面坐標系內多邊形的計算,已知各定點坐標,有順序的,逆時針或者順時針。根據給出坐標求面積。
這裡介紹一種比較簡單的方法,用積分求多邊形面積。對每條邊對x軸積分之和即可得出面積。注意如果按順時針方向求積分和得出的是面積,逆時針為面積的相反數。不明白的可以自己畫圖驗證,原理很簡單,不詳細說明。
1 #include<iostream>
2 using namespace std;
3 //計算一條邊的積分
4 double cal(int x1,int y1,int x2,int y2){
5 return (x2-x1)*(y1+y2)/2.0;
6 }
7 int main(){
8 int x0,y0,x1,y1,x2,y2;
9 int n;
10 while(cin>>n&&n!=0){//循環計算每條邊的積分
11 cin>>x1>>y1>>x2>>y2;
12 x0=x1;y0=y1;
13 double sum=0;
14 sum+=cal(x1,y1,x2,y2);
15 for(int i=3;i<=n;i++){
16 x1=x2;y1=y2;
17 cin>>x2>>y2;
18 sum+=cal(x1,y1,x2,y2);
19 }
20 sum+=cal(x2,y2,x0,y0);//最後一個點和第一個點的連線積分。
21 printf("%.1f\n",-sum);
22 }
23 return 0;
24 }