平面內多邊形的計算,也就是平面坐標系內多邊形的計算,已知各定點坐標,有順序的,逆時針或者順時針。根據給出坐標求面積。
這裡介紹一種比較簡單的方法,用積分求多邊形面積。對每條邊對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 }