1. 程式人生 > >已知座標求多邊形面積

已知座標求多邊形面積

   思路   已知三角形座標求面積

#include<stdio.h>

int main()
{
    double a,b,c,d,e,f,s;
    while( scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&e,&f))

{   if(a==0&&b==0&&c==0&&d==0&&e==0&&f==0)
          return 0;
        s=(a*d+c*f+b*e-e*d-b*c-a*f)/2;
        if(s<0) s=-s;

        printf("%.1lf\n",s);
       }


}
        
     另外可以用海倫公式求面積
,那麼多邊形面積也就可以求了。我們把多邊形的中心預設為多的三角形的公共頂點,放在直角座標系下o(0,0)的位置

根據叉乘的原理,向量OA叉乘向量OB等於三角形OAB面積的2倍,,將它們的值相加(sum+=s;)就得到n邊行面積德和

#include<stdio.h>
struct stu
{
    double x;
    double y;
} a[1000];
int main()
{
    int n,j;
    while(~scanf("%d",&n))
    {
        for(int i=0;i<n;i++)
        {
            scanf("%lf%lf",&a[i].x,&a[i].y);
        }
        double area=0;
        for(int i=0;i<n;i++)
        {
            j=(i+1)%n;
            area+=a[i].x*a[j].y-a[j].x*a[i].y;


        }
        if(area<0) area=-area;
        printf("%.2lf\n",area/2);
    }
}