POJ 1584 A Round Peg in a Ground Hole(点到直线距离,多边形是否为凸)
来源:互联网 发布:随机抽取算法 编辑:程序博客网 时间:2024/05/17 02:54
题意:顺时针或逆时针给出n个点和一个圆,判断多边形是否为凸。且圆在多边形里面。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>using namespace std;const double EPS = 1e-6;bool zero(double t){return -EPS<t&&t<EPS;}struct cvector{ double x,y; cvector(double a,double b){x=a,y=b;} cvector(){}};cvector operator-(cvector a,cvector b){ return cvector(a.x-b.y,a.y-b.y);}cvector operator+(cvector a,cvector b){ return cvector(a.x+b.x,a.y+b.y);}cvector operator*(double a,cvector b){ return cvector(a*b.x,a*b.y);}double operator*(cvector a,cvector b){ return a.x*b.x+a.y*b.y;}double operator^(cvector a,cvector b){ return a.x*b.y-b.x*a.y;}double length(double t){return t<0?-t:t;}double length(cvector t){return sqrt(t*t);}cvector unit(cvector t){ return 1/length(t)*t;}struct cpoint{ double x,y; void get(){ scanf("%lf%lf",&x,&y); } cpoint(double a,double b){x=a,y=b;} cpoint(){}};cvector operator-(cpoint a,cpoint b){ return cvector(a.x-b.x,a.y-b.y);}double dist(cpoint a,cpoint b){ return length(a-b);}struct cline{ cpoint a,b; cline(cpoint x,cpoint y){a=x,b=y;}};struct circle{ cpoint a; double len;} cir;double dist(cpoint b,cline a){ cvector v = a.a-a.b; v=cvector(v.y,-v.x); v=unit(v); return length(v*(b-a.b));}cpoint re[10009];int main(){ freopen("in.txt","r",stdin); int n; while(scanf("%d%lf%lf%lf",&n,&cir.len,&cir.a.x,&cir.a.y)==4&&n>2) { for(int i=1;i<=n;i++) re[i].get(); re[0]=re[n];re[n+1]=re[0]; // double t = (re[1]-re[n])^(re[n]-re[n-1]); double t=0.0; int i,fin=0; for(i=1;i<=n;i++) { if(((re[i+1]-re[i])^(re[i]-re[i-1]))*t<-EPS)break; if(zero(t)) t=((re[i+1]-re[i])^(re[i]-re[i-1])); if(((cir.a-re[i])^(re[i]-re[i-1]))*t<-EPS) fin=1; if(dist(cir.a,cline(re[i],re[i-1]))<cir.len) fin=1; } if(i<n) { printf("HOLE IS ILL-FORMED\n"); continue; } if(fin) printf("PEG WILL NOT FIT\n"); else printf("PEG WILL FIT\n"); } return 0;}
- POJ 1584 A Round Peg in a Ground Hole(点到直线距离,多边形是否为凸)
- POJ 1584 A Round Peg in a Ground Hole(点到直线距离,圆与多边形相交,多边形是否为凸)
- A Round Peg in a Ground Hole(POJ1584点在多边形内+是否为凸多边形)
- POJ 1584-A Round Peg in a Ground Hole(计算几何-凸包、点到线段距离)
- POJ 1584:A Round Peg in a Ground Hole _判断点是否在多边形内(5种方法)
- POJ 1584 A Round Peg in a Ground Hole(是否凸包 && 圆是否在凸包内)
- poj 1584 A Round Peg in a Ground Hole 判断多边形是否为凸多边形 + 圆心是否在凸多边形内 + 圆是否在凸多边形内部
- poj 1584 A Round Peg in a Ground Hole 多边形凸性判断,点与多边形位置关系,圆与多边形位置关系
- POJ 1584 A Round Peg in a Ground Hole(凸多边形判断+点与多边形的位置关系)
- POJ A Round Peg in a Ground Hole <凸包判断以及点与多边形的相对位置>
- POJ-1584-A Round Peg in a Ground Hole-计算几何-凸多边形+多边形包含圆
- POJ 1584 A Round Peg in a Ground Hole
- poj 1584 A Round Peg in a Ground Hole
- POJ 1584 A Round Peg in a Ground Hole
- POJ 1584 A Round Peg in a Ground Hole
- poj 1584 A Round Peg in a Ground Hole
- poj 1584 A Round Peg in a Ground Hole
- POJ 1584--A Round Peg in a Ground Hole
- 过客--古老的用例
- 从那一天起,你就成了我的全部
- linux jobs,fg,bg,&命令
- 时钟一
- android2.3 View视图框架源码分析之一:android是如何创建一个view的?
- POJ 1584 A Round Peg in a Ground Hole(点到直线距离,多边形是否为凸)
- [Bat] Error: The syntax of the command is incorrect.
- PostgreSQL增量备份
- Struts2基于注解的Action配置
- Bellman-Ford(贝尔曼-福特)算法分析与实现(C/C++)
- 关于C++ const 的全面总结
- subversion设置中发生问题!no repository found
- 名称空间学习总结
- 2012中兴ZTE笔试题 软件 -题1