ssl1213-多边形面积【差积,计算几何】
生活随笔
收集整理的這篇文章主要介紹了
ssl1213-多边形面积【差积,计算几何】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正題
題目大意
求一個多邊形面積。
解題思路
隨便定一個原點,然后答案就是相鄰點的差積之和的絕對值。
要判斷不能組成多邊形的情況。
codecodecode
#include<cstdio> #include<algorithm> #include<cmath> #define N 1010 #define db double using namespace std; db zx,zy,r,x[N],y[N]; int n,cnt,ans; struct node{db x,y; }p[N]; db cz(node p2,node p3,node p1){return (p2.x-p1.x)*(p3.y-p1.y)-(p3.x-p1.x)*(p2.y-p1.y); } db banana(node p1,node p2,node p3,node p4){return (cz(p2,p3,p1)*cz(p2,p4,p1)<0&&cz(p4,p1,p3)*cz(p4,p2,p3)<0); } int main() {scanf("%d",&n);double ans=0,lx,ly;if (n<=2){printf("Impossible");return 0;}for(int i=1;i<=n;i++)scanf("%lf%lf",&p[i].x,&p[i].y);for(int i=2;i<=n;i++)for(int j=1;j<n;j++)if((i!=j)&&(i!=j+1)&&banana(p[i-1],p[i],p[j],p[j+1])){printf("Impossible");return 0;}for(int i=3;i<=n;i++)ans+=cz(p[i],p[i-1],p[1])*0.5;printf("%0.2lf",abs(ans)); }總結
以上是生活随笔為你收集整理的ssl1213-多边形面积【差积,计算几何】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用VBA激活指定应用的程序,几乎没
- 下一篇: 为什么黑客们几乎都不使用鼠标为什么黑客们