已知座標求多邊形面積
阿新 • • 發佈:2019-01-24
思路 已知三角形座標求面積
#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); } }