计算几何——poj1410,线段不规范交
直接用kuangbin的板子,能判不规范,规范和不交
另外线段在矩形内也可以,判断方式是比较线段的端点和矩形四个角
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream> using namespace std;
const double eps = 1e-;
int sgn(double x){if (fabs(x)<eps) return ; return (x>)?:-;}
struct Point{
double x,y;
Point(int _x = ,int _y = ):x(_x),y(_y){}
bool operator == (Point b)const{
return sgn(x - b.x) == && sgn(y - b.y) == ;
}
Point operator - (const Point &b)const{
return Point(x - b.x,y - b.y);
}
double operator ^(const Point &b)const{
return x*b.y - y*b.x;
}
double operator *(const Point &b)const{
return x*b.x + y*b.y;
}
Point operator +(const Point &b)const{
return Point(x+b.x,y+b.y);
}
Point operator *(const double &k)const{
return Point(x*k,y*k);
}
Point operator /(const double &k)const{
return Point(x/k,y/k);
}
}; struct Line{
Point s,e;
int segcrossseg(Line v){
int d1 = sgn((e - s)^(v.s - s));
int d2 = sgn((e - s)^(v.e - s));
int d3 = sgn((v.e - v.s)^(s - v.s));
int d4 = sgn((v.e - v.s)^(e - v.s));
if( (d1^d2)== - && (d3^d4)== - )
return ;
return (d1== && sgn((v.s - s)*(v.s - e))<=) ||
(d2== && sgn((v.e - s)*(v.e - e))<=) ||
(d3== && sgn((s - v.s)*(s - v.e))<=) ||
(d4== && sgn((e - v.s)*(e - v.e))<=);
}
}; int n;
Line a,b,c,d,line;
double x1,Y1,x2,y2,x3,y3,x4,y4;
int main(){
scanf("%d",&n);
while(n--){
scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&Y1,&x2,&y2,&x3,&y3,&x4,&y4);
line.s = Point{x1,Y1}; line.e = Point{x2,y2};
a.s = Point{x3,y3}; a.e = Point{x3,y4};
b.s = Point{x3,y4}; b.e = Point{x4,y4};
c.s = Point{x4,y4}; c.e = Point{x4,y3};
d.s = Point{x4,y3}; d.e = Point{x3,y3};
if (line.segcrossseg(a) || line.segcrossseg(b)
|| line.segcrossseg(c) || line.segcrossseg(d)
|| (sgn(fabs(x1-x3)+fabs(x1-x4)-fabs(x3-x4))==
&& sgn(fabs(Y1-y3)+fabs(Y1-y4)-fabs(y3-y4))==)) puts("T");
else puts("F");
}
}
计算几何——poj1410,线段不规范交的更多相关文章
- (线段判交的一些注意。。。)nyoj 1016-德莱联盟
1016-德莱联盟 内存限制:64MB 时间限制:1000ms 特判: No通过数:9 提交数:9 难度:1 题目描述: 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们 ...
- (叉积,线段判交)HDU1086 You can Solve a Geometry Problem too
You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- luogu P1354 房间最短路问题 计算几何_Floyd_线段交
第一次写计算几何,还是很开心的吧(虽然题目好水qaq) 暴力枚举端点,暴力连边即可 用线段交判一下是否可行. Code: #include <cstdio> #include <al ...
- (计算几何 线段判交) 51nod1264 线段相交
1264 线段相交 给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交). 如果相交,输出"Yes",否则输出"No". ...
- 【计算几何初步-线段相交】【HDU1089】线段交点
You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- You can Solve a Geometry Problem too(线段求交)
http://acm.hdu.edu.cn/showproblem.php?pid=1086 You can Solve a Geometry Problem too Time Limit: 2000 ...
- LOJ2401 JOISC2017 Dragon2 计算几何、线段树
传送门 先考虑每一个攻击方的龙和被攻击方的龙可以与多少个被攻击方/攻击方的龙匹配. 对于攻击方的龙\(A\)和被攻击方的龙\(B\),在道路为线段\((C,D)\)的情况下,能够与下图位置的所有对应属 ...
- 计算几何——判线段规范相交+最短路zoj1721
枚举每个端点,然后i点j点连线作为一条路径,逐一判断这条路径是否可行即可 注意的地方:判一条线段是否可行,需要判其余线段是否和其相交,但是这个相交比较难判(因为会不规范相交),所以将问题转化为墙以外的 ...
- POJ 3449 Geometric Shapes --计算几何,线段相交
题意: 给一些多边形或线段,输出与每一个多边形或线段的有哪一些多边形或线段. 解法: 想法不难,直接暴力将所有的图形处理成线段,然后暴力枚举,相交就加入其vector就行了.主要是代码有点麻烦,一步一 ...
随机推荐
- CSIC_716_20191127【组合,封装、类的私有属性方法、property装饰器】
组合 what? 组合是指一个对象中,包含另一个或多个对象. why? 减少代码的冗余. How? 在类中加入其他类的对象,实现跨类对象之间的联动. 耦合度 软件设计要 高内聚 ...
- Java HashSet和ArrayList的查找Contains()时间复杂度
今天在刷leetCode时,碰到了一个题是这样的. 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 看到 ...
- leetcood学习笔记-118-杨辉三角
题目描述: 第一次提交: class Solution: def generate(self, numRows: int): l = [] for i in range(numRows): n = [ ...
- Springboot文件上传限制
#100,000,000 100M spring.servlet.multipart.max-file-size = 100000000 spring.servlet.multipart.max-re ...
- 二分图hall定理应用+二分+双指针——cf981F(好题)
/* 二分答案,判mid是否合法 如何判断:如果是在直线上,那么遍历匹配即可 现在在环上,即既可以向前匹配也可以向后匹配,那么将环拆开,扩展成三倍 显然a和b的匹配边是不可能交叉的,因为交叉必定没有不 ...
- NX二次开发-UFUN单按钮模态对话框窗口打印uc1601用法
NX9+VS2012 #include <uf.h> #include <uf_ui.h> UF_initialize(); //方法1(uc1601) uc1601();// ...
- NX二次开发-UFUN获取图层的状态UF_LAYER_ask_status
NX11+VS2013 #include <uf.h> #include <uf_ui.h> #include <uf_layer.h> UF_initialize ...
- JS对象的可枚举属性和不可枚举属性
昨天在写文章(转载)的时候发现了有些对象的方法是分可枚举性和不可枚举性的.简单的查了一下资料,今天来捋一捋啥是对象的可枚举啥是不可枚举. 可枚举性: 对象的每一个属性都有一个描述对象,用来描述和控制该 ...
- CSS3:教程
ylbtech-CSS3:教程 1.返回顶部 1. CSS3 教程 CSS 用于控制网页的样式和布局. CSS3 是最新的 CSS 标准. 本教程向您讲解 CSS3 中的新特性. 开始学习 CSS3! ...
- Spring随笔-核心知识DI与AOP
DI 依赖注入,使得相互依赖的组件松耦合. AOP 面向切面编程,使各种功能分离出来,形成可重用的组件.