计算几何——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就行了.主要是代码有点麻烦,一步一 ...
随机推荐
- 22-3concat
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- metasploit5配置数据库
#踩坑:Please run msfdb as a non-root user apt-get install postgresql #安装数据库 service postgresql start # ...
- 逻辑右移函数 srl()与算术右移函数 sra() (转)
比如一个有符号位的8位二进制数11001101,逻辑右移就不管符号位,如果移一位就变成01100110.算术右移要管符号位,右移一位变成10100110. 逻辑左移=算数左移,右边统一添0 逻辑右移, ...
- tcmalloc jemalloc 和ptmalloc 对比
ptmalloc 是glibc的内存分配管理 tcmalloc 是google的内存分配管理模块 jemalloc 是BSD的提供的内存分配管理 三者的性能对比参考从网上的一个图如下: 自己测试了一下 ...
- GC线程是否为守护线程?
GC是垃圾收集的意思,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,从而有效的防止内存泄露.要请求垃圾收集,可以调用下面的方法之一:System.gc()或Runti ...
- openwrt redis
2071 make V=s 2072 cd build_dir/target-x86_64_uClibc-0.9.33.2/root-x86/ cd package/network/services/ ...
- $.extend() $.fn.extend()
(非原创)jQuery为开发插件提拱了两个方法,分别是:jQuery.fn.extend();jQuery.extend();虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便 ...
- python 获取年月日时分秒 获取当前时间 datetime函数
import datetime#取当前时间print(datetime.datetime.now())#取年print(datetime.datetime.now().year)#取月print(da ...
- php fopen用法以及解释
$log = fopen('./log.txt','a');//生成一个log.txt文件,a相当于文件的权限 fwrite($log,'成功'."\r\n");//写入文件 mo ...
- 2018-2019-2-20175323 java实验二《Java面向对象程序设计》
单元测试 1.在IDEA中新建项目并输入单元测试的代码 2.在IDEA中下载Junit,我发现Junit已经存在了 3.新建test文件 遇到的问题 发现Junit红字解析不了 解决办法:查找到jun ...