改革春风吹满地
多边形面积公式
- 如果逆时针给出点坐标,值为正,
- 如果顺时针给出点坐标,值为负。
- 包括凸凹多边形
- 实质为==第一个点与第二个点 第二个点与第三个点 一直到第n个点与第一个点的 叉乘 == 的和
1 #include <cstdio> 2 #include <cmath> 3 4 typedef struct Point 5 { 6 int x; 7 int y; 8 }P; 9 10 int main() 11 { 12 int n, m, l; 13 while(scanf("%d", &n) && n != 0) 14 { 15 P p[50]; 16 double res = 0; 17 18 for(int i = 0; i < n; ++ i) 19 { 20 scanf("%d %d", &m, &l); 21 p[i].x = m; 22 p[i].y = l; 23 } 24 25 p[n].x = p[0].x; 26 p[n].y = p[0].y; 27 28 for(int i = 0; i < n; ++ i) 29 { 30 res += (p[i].x * p[i+1].y - p[i+1].x * p[i].y); 31 } 32 printf("%.1f\n", 0.5*fabs(res)); 33 } 34 35 36 return 0; 37 }