题意:

按照顺时针或逆时针方向输入一个n边形的顶点坐标集,先判断这个n边形是否为凸包。

再给定一个圆形(圆心坐标和半径),判断这个圆是否完全在n边形内部。

解题思路:

1、判断该多边形是否是凸包,由于题目已经给定了顺时针或逆时针输入,只需判断相邻的三点是否是向左拐或向右拐即可,判断的方法是向量的叉积。

2、判断圆心是否在凸包内,假定圆心为O,凸包上任意相邻的两点为Ai,Ai+1,如果O在凸包内,则所有的OAi与OAi+1叉积应该为同正或同负。

3、判断整个圆是否都在凸包内,只需判断圆心到凸包的边的距离是否大于等于半径,由于是凸多边形,所以不需要枚举顶点。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;const int maxn = 105;
const double eps = 1e-6;
struct Point
{double x,y;
}p[maxn],circle;
int n;
double r;double Cross(Point a,Point b,Point c)
{  return (a.x-c.x)*(b.y-c.y)-(b.x-c.x)*(a.y-c.y);
}  double dis(Point a,Point b)
{return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}double mult_point(Point a,Point b,Point c)
{return (a.x-c.x)*(b.x-c.x)+(a.y-c.y)*(b.y-c.y);
}double GetDist(Point a,Point b,Point c)
{if(dis(a,b) < eps) return dis(b,c); ///a,b是同一个点if(mult_point(b,c,a) < -eps) return dis(a,c); ///投影if(mult_point(a,c,b) < -eps) return dis(b,c);return fabs(Cross(b,c,a) / dis(a,b));
}bool isConvex()
{double flag = Cross(p[1],p[2],p[3]);for(int i = 2; i <= n - 2; i++)if(flag * Cross(p[i],p[i+1],p[i+2]) < -eps) return false;if(flag * Cross(p[n-1],p[n],p[1]) < -eps) return false;return true;
}bool is_In_Convex()
{//判断圆心是否在凸包内double flag = Cross(circle,p[1],p[2]);for(int i = 1; i <= n - 1; i++)if(flag * Cross(circle,p[i],p[i+1]) < -eps) return false;if(flag * Cross(circle,p[n],p[1]) < -eps) return false;//判断整个圆是否在凸包内for(int i = 1; i <= n - 1; i++)if(GetDist(p[i],p[i+1],circle) - r < -eps) return false;if(GetDist(p[n],p[1],circle) - r < -eps) return false;return true;
}int main()
{while(scanf("%d",&n),n >= 3){scanf("%lf%lf%lf",&r,&circle.x,&circle.y);for(int i = 1; i <= n; i++)scanf("%lf%lf",&p[i].x,&p[i].y);if(isConvex() == false){printf("HOLE IS ILL-FORMED\n");continue;}if(is_In_Convex() == false)printf("PEG WILL NOT FIT\n");else printf("PEG WILL FIT\n");}return 0;
}

poj 1584(凸包+点在凸多边形内+圆在凸多边形内)相关推荐

  1. POJ 1584 A Round Peg in a Ground Hole 判断凸多边形,点到线段距离,点在多边形内

    ACM博客_kuangbin POJ 1584 A Round Peg in a Ground Hole(判断凸多边形,点到线段距离,点在多边形内) A Round Peg in a Ground H ...

  2. 用python求解:用户分别输入外援半径和内圆半径,计算圆环的面积;及用户分别输入圆柱的底面圆半径和高,输出圆柱和表面积。(附带源码)

    用python求解:用户分别输入外援半径和内圆半径,计算圆环的面积:及用户分别输入圆柱的底面圆半径和高,输出圆柱和表面积.(附带源码) 纯分享一下平时练习题: 运算结果如下 源代码如下: import ...

  3. html标签的显示模式(块级标签,行内标签,行内块标签)(转)

    html标签的显示模式(块级标签,行内标签,行内块标签) 今天讲课的时候,讲到了html中的标签的显示模式,大致分为块级标签和行内标签.那么初学者在刚使用标签的时候会发现有些属性在一些标签上不起作用, ...

  4. css标签显示特性(块级元素、行内元素、行内块元素、标签显示模式转换display、简单文字居中、简单导航栏案例)

    HTML标签一般分为块标签和行内标签两种类型,它们也称块元素和行内元素. 标签以什么方式进行显示,比如div 自己占一行, 比如span 一行可以放很多个 1. 块级元素(block-level) 常 ...

  5. CSS的元素显示模式(块内元素和行内元素)

    CSS的元素显示模式:块内元素和行内元素. 块内元素:<h1>-<h6>,<p>,<div>,<ul>,<ol>,<li& ...

  6. python正则group()的用法—正则提取括号内以及其他符号内内容

    python正则提取括号内以及其他符号内内容,我以前学过一点点正则,但是学的不深,用的正则也是最笨的正则方法,只会group(0). 然而,我今天又看了下正则,发现正则的提取确实好用.无论爬虫还是文本 ...

  7. 块状元素、内联元素和内联块状元素

    CSS中,html中的标签元素大体被分为三种不同的类型:块状元素(display:block).内联元素(又叫行内元素display:inline)和内联块状元素(display:inline-blo ...

  8. 内网渗透-域内有网和无网

    文章目录 前言 域内主机有网 攻击流程 域内主机无网 操作流程 前言 在渗透测试的过程中,拿下域内一台主机以后,有时候内网的其他主机有网,有时候没网,此时,如果有网我们就按常规的渗透测试即可,如果没网 ...

  9. 内置对象和内置函数_内置假对象

    内置对象和内置函数 尽管模拟对象是进行单元测试的理想工具,但通过模拟框架进行模拟可能会将您的单元测试变成难以维护的混乱. 这种复杂性的根本原因是我们的对象太大. 他们有很多方法,这些方法返回其他对象, ...

最新文章

  1. 比买电脑还便宜的桌面虚拟化方案
  2. vim打开所有折叠的方法及其他所有折叠的命令
  3. Java线程池Executor框架
  4. pom 的第三方jar报错_01_maven-将第三方jar包一起打包到项目 jar 包中
  5. tcp报文格式_34.TCP取样器
  6. 【物理女神】谁是中国第一位物理学女博士?
  7. Ubuntu16.04 下 tensorRT安装
  8. 数组算法 中部删除数据 1202
  9. python笔记(三) - 变量
  10. 使用 jQuery Mobile 和 CSS3 实现响应式设计
  11. 年薪 80w 的程序员被鄙视了!
  12. 文本整理器 v3.0 官方
  13. ubuntu 20.04.1安装Google输入法
  14. 模块“XXX.dll”加载失败
  15. 调用WindowsMedia播放器与Flash播放器
  16. 字节(byte)、位(bit)、KB、B、字符之间关系以及编码占用位数
  17. 与同行的对比,M-DAO的崛起已成定局
  18. dxp中发光二极管在哪找_如何设计发光二极管的元件符号?
  19. 推荐系统遇上深度学习(二十一)--贝叶斯个性化排序(BPR)算法原理及实战
  20. 用HTML写一个仿写新浪微博简单的导航

热门文章

  1. 年度重磅!中国《营销自动化应用基准报告 2021》正式发布!
  2. 神策数据易向文:打造券商上层数据应用的坚实基础
  3. 神策智能推荐 | 运营后台,你的智能分发“万能助手”
  4. VUE 携手神策数据,数据驱动短视频质效双升级
  5. 历时数十载,20 位顶级大咖带你践行大数据与 AI(具体议程出炉)
  6. Elam的caffe笔记之配置篇(一):CentOS6.5编译安装gcc4.8.2
  7. sort和uniq命令
  8. nodejs实战案例(Express框架+mongoDB)——(1)——前言
  9. .NET/ASP.NET Routing路由(深入解析路由系统架构原理)
  10. FC3服务器配置一条龙