题目链接
大意是求多边形的面积,可以采用将多边形拆成多个三角形求解面积。
n个顶点可以得到n-2个三角形。计算面积方法为:
*已知三角形坐标A(x1,y1),B(x2,y2),C(x3,y3)
三角形的面积为S ,S=(1/2) * (x1y2 * 1+x2y3 * 1+x3y1 * 1-x1y3 * 1-x2y1 * 1-x3y2 1)
我们可以固定一个点,来将多边形进行拆分成多个三角形来计算
如图为五边形,选取左下为定点进行计算
代码如下:
#include <iostream>
#include<stdio.h>
using namespace std;
struct triangle
{
int x;
int y;
}a[100];
double f(int x, int y, int x1, int y1, int x2, int y2)
{
return (x * y1 + x1 * y2 + x2 * y - x * y2 - y * x1 - x2 * y1) / 2.0;
}
int main()
{
int n;
while (cin >> n)
{
if (n == 0) break;
for (int i = 0;i < n;i++)
{
cin >> a[i].x >> a[i].y;
}
double area = 0;
for (int i = 1;i < n - 1;i++)
{
area += f(a[0].x, a[0].y, a[i].x, a[i].y, a[i + 1].x, a[i + 1].y);
}
printf("%.1lf\n", area);
}
return 0;
}