hdoj 2036 求多边形面积

题目在这里:2036 改革春风吹

这题的目的就是求多边形的面积,求多边形的面积是通过将多边形分割成多个三角形,然后求多个三角形的面积和,就能得到多边形的面积。
而求三角形的面积S=a * b由于题目是逆时针给的坐标,所以用向量求得的结果就是正数,如果是顺时针的话,求得的结果就是负数。

如图是将左边转换为行列式后,行列式的运算:


2036运算.jpg

然后我们将所要求得多边形分割,如图所示
2036分割.jpg

那么如果这个多边形是凹的呢
ad1cd6d249812ee532f291d8cbf48b1.jpg

我们可以看到,这个多边形的面积应该是SABC+SACD-SADE
因为在输入时,先输入D的坐标再输入E的坐标,那么当我读取这些坐标的时候,对于三角形ADE来讲,就是顺时针了,所以用行列式求出来的值就是负数。

将x值存放在数组a中,y值存放在数组b中,对于求每个三角形的面积,永远都要用到x0,y0

#include 
int main(){
    int a[100],b[100];
    int i;
    int n;
    double ans,tan; 
    while(~scanf("%d",&n)&&n){
        ans=0;
        for(i=0;i

你可能感兴趣的:(hdoj 2036 求多边形面积)