poj1954(pick公式:求多边形内点的个数)
2014-03-15 21:32
148 查看
要做这道题目,首先要知道这个公式:面积=边界点数/2 + 内部点数 - 1
面积通过将多边形分割成多个三角形求得,边界点数通过gcd求得
代码如下:
面积通过将多边形分割成多个三角形求得,边界点数通过gcd求得
代码如下:
#include<iostream> #include<algorithm> #include<string> #include<stack> #include<queue> #include<set> #include<map> #include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<time.h> #include<math.h> #define eps 1e-9 #define pi acos(-1.0) #define P system("pause") using namespace std; struct point { double x,y; }; double cross(point A,point B) { return A.x*B.y-A.y*B.x; } int gcd(int a,int b) { if(b>a){int t;t=a;a=b;b=t;} if(b==0) return a; return a%b==0?b:gcd(b,a%b); } int main() { //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); point A,B,C;//面积 = 边界点数 ÷ 2 + 内部点数 - 1 while(scanf("%lf%lf%lf%lf%lf%lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y)) { if(!A.x&&!B.x&&!C.x&&!A.y&&!B.y&&!C.y) break; int k=0; // k=gcd(fabs(A.x-B.x),fabs(A.y-B.y)); k= gcd(fabs(A.x-B.x),fabs(A.y-B.y)) + gcd(fabs(A.x-C.x),fabs(A.y-C.y))+gcd(fabs(C.x-B.x),fabs(C.y-B.y)); point v,w; w.x=A.x-B.x;w.y=A.y-B.y; v.x=A.x-C.x;v.y=A.y-C.y; // cout<<cross(w,v)/2<<" "<<k<<endl;; int area=fabs(cross(w,v))/2+1-k/2; printf("%d\n",area); } // P; return 0; }
相关文章推荐
- 格点多边形面积公式(Pick定理)的一个形象解释(转)
- POJ 1265 (Pick 公式+求任意多边形面积+顶点多边形的边整点个数)
- poj 1265 Area(Pick公式 多边形面积 边点数)
- 谈求面积的Pick 公式
- 多边形顺时针方向判断公式及C++代码实现二
- poj1265 & poj2954(皮克定理pick)在格点上的多边形求面积公式
- 经纬度坐标下的球面多边形面积计算公式
- [hdu5448 Marisa’s Cake]多边形面积,公式化简
- Area - POJ 1265(pick定理求格点数+求多边形面积)
- 关于三角形面积的公式与格点多边形面积计算算法的讨论
- 编程-任意多边形的面积公式
- 多边形顺时针方向判断公式及C++代码实现二
- 多边形面积计算公式
- 使用行列式公式求多边形面积
- 多边形面积计算公式
- 如何判断一个点是否在一个多边形内部+三角形有向面积公式
- Chain Code [UVALive - 4884] Pick定理和多边形求面积
- 多边形面积公式
- POJ 1265-Area(多边形面积、边点、内点-pick定理、叉积)
- poj 1265 Area【计算几何:叉积计算多边形面积+pick定理计算多边形内点数+计算多边形边上点数】