POJ1584 判断多边形是否为凸多边形,并判断点到直线的距离

求点到直线的距离:

double dis(point p1,point p2)
{
   if(fabs(p1.x-p2.x)<exp)//相等的
  {
    return fabs(p2.x-pegx);
    }
  else
     {
   double k=(p2.y-p1.y)/(p2.x-p1.x);
   double b=p2.y-k*p2.x;
   return fabs(k*pegx-pegy+b)/sqrt(k*k+1);//返回的是距离的
   }
}
判断多边形是否为凸多边形

if the hole contains any protrusions (i.e., if there exist any two interior points in the hole that, if connected by a line segment, that segment would cross one or more edges of the hole)(括号里的是凸多边形定义的英文描述), then the filled-in-hole would not be structurally sound enough to support the peg under normal stress as the furniture is used.

按顺序读入边,边和边是按照一个顺序转的(叉积全为正或者全为负)

时间: 2024-10-11 08:20:47

POJ1584 判断多边形是否为凸多边形,并判断点到直线的距离的相关文章

hdu 2108 Shape of HDU【判断多边形是否是凸多边形模板】

#include<stdio.h> #include<math.h> const int maxn = 100000; struct Point{ double x,y; Point() {} Point(double _x, double _y) { x = _x; y = _y; } Point operator -(const Point &B) const { return Point(x-B.x, y-B.y); } }p[maxn]; double eps =

poj 1584 A Round Peg in a Ground Hole 判断多边形是否为凸多边形 + 圆心是否在凸多边形内 + 圆是否在凸多边形内部

题目来源: http://poj.org/problem?id=1584 题意: 给一个多边形, 一个圆心以及半径. 首先判断是否为凸多边形. 如果是凸多边形, 再判断,圆是否在凸多边形内部. 分析: 1) 先判断是否为凸多边形 ,题目给出的顶点是有序的, 即顺时针或是 逆时针.用叉积方向判断. 2) 判断圆在多边形内, 首先判断 圆心是否在多边形内部, 是的话,然后再 判断 圆心到多边形 所有边的 距离d >= r , 即可. 代码如下: const int Max_N = 1005; con

(hdu 7.1.1)Shape of HDU(判断一个多边形是否是凸多边形)

题目: Shape of HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 159 Accepted Submission(s): 97   Problem Description 话说上回讲到海东集团推选老总的事情,最终的结果是XHD以微弱优势当选,从此以后,"徐队"的称呼逐渐被"徐总"所取代,海东集团(

poj1584 A Round Peg in a Ground Hole 判断多边形凹凸,点到线的距离【基础计算几何】

大致思路:首先对于所给的洞的点,判断是否是凸多边形,图形的输入和输出可以是顺时针或者逆时针,而且允许多点共线 Debug 了好几个小时,发现如下问题 判断三点是否共线,可用斜率公式判断 POINT point_A, point_B, point_C; if(point_A.x == point_B.x || point_B.x == point_C.x){ if(point_A.x == point_B.x && point_B.x == point_C.x) continue; }els

C#判断多边形的凹凸性

最近项目中需要加入通过鼠标点击自由绘制多边形的功能,为了防止用户不依次选取多边形的定点,结合需求通过如下方法实现: 我们知道任意n个顶点的凸多边形可以分解成(n-2)个三角形,一个三角形的内角和是180°,所有三角形的内角和是(n-2)*180°,这一点,对于凸多边形或者凹多边形来说都是一样的,但是对于一个凸多边形来说,不存在内角大于外角,而凹多边形则会存在. bool IsHollow(List<Vector3> curveloopPoints) { //使用角度和判断凹凸性:凸多边形的内角

判断点是否在凸多边形内

判断点是否在凸多边形内的方法很多,此处仅给出使用向量叉积判断点是否在凸多边形内的方法. 以下图为例说明问题: 原则: 1. 将多边形的第i条边的第一个顶点指向点P得到向量 v1,然后将从第一个顶点指向第二个顶点得到向量v2,叉乘这两个向量. 2.如果叉乘结果与上一条边的叉乘结果的乘积大于0则继续执行,如果乘积小于0,表示点P不在凸多边形内,直接返回即可. 要点:要求凸多边形的点以固定的顺序给出,例如固定为逆时针或顺时针. 实现的代码如下: struct Point { float x; floa

zoj 1010 (线段相交判断+多边形求面积)

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=10 Area Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge Jerry, a middle school student, addicts himself to mathematical research. Maybe the problems he has thought are

CASE函数用法:相当于switch..case:,能够实现等值判断,也可以做范围判断 相当于if...else

--CASE函数用法:--1.相当于switch..case:,能够实现等值判断--语法:--case 字段/表达式 --判断指定折字段或者表达式的值,它不能判断null值,因为null不是一个具体的值-- when 值 then '自定义值'-- when 值 then '自定义值'-- else '前面都不满足的情况'--end--特点:-- 1.会生成一个新列-- 2.then后面的值的类型需要一致select StudentNo,StudentName,case ClassId when

Java编程练习之判断Java文件名是否正确,判断邮箱格式是否正确和统计指定字符串中某字符现的次数

一判断Java文件名是否正确,判断邮箱格式是否正确 功能:判断Java文件名是否正确,判断邮箱格式是否正确.其中:合法的文件名应该以.java结尾:合法的邮箱名 中至少要包含 "@" , 并要求 "@" 在 "." 之前. 练习代码: public class Test { public static void main(String[] args) { //Java文件名 String fileName = "HelloWorld.j