多边形面积公式
- 如果逆时针给出点坐标,值为正,
- 如果顺时针给出点坐标,值为负。
- 包括凸凹多边形
- 实质为==第一个点与第二个点 第二个点与第三个点 一直到第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
", 0.5*fabs(res));
33 }
34
35
36 return 0;
37 }