poj 1410 计算几何
/**
注意: 千万得小心。。就因为一个分号,调了一个晚上。。。
**/
#include <iostream>
#include <algorithm>
using namespace std;
struct point {
int x,y;
}; struct line{
point a;
point b;
};
line l,lt;//l 直线 lt 矩形的边
int x1,x2,y1,y2; int mmax(double a,double b){
return a>b?a:b;
} int mmin(double a,double b){
return a<b?a:b;
} double dir(point o,point p,point q){
return (p.x-o.x)*(q.y-o.y)-(p.y-o.y)*(q.x-o.x);
} int on_border(point o,point p,point q){
if(mmin(o.x,p.x)<=q.x&&q.x<=mmax(o.x,p.x)&&mmin(o.y,p.y)<=q.y&&q.y<=mmax(o.y,p.y))
return ;
else
return ;
} int cross(line v,line t){
double a,b,c,d;
a = dir(t.a,t.b,v.a);
b = dir(t.a,t.b,v.b);
c = dir(v.a,v.b,t.a);
d = dir(v.a,v.b,t.b);
if(a*b<&&c*d<)
return ;
if(!a&&on_border(t.a,t.b,v.a))
return ;
if(!b&&on_border(t.a,t.b,v.b))
return ;
if(!c&&on_border(v.a,v.b,t.a))
return ;
if(!d&&on_border(v.a,v.b,t.b))
return ;
return ;
} int main()
{
int n;
cin>>n;
while(n--){
cin>>l.a.x>>l.a.y>>l.b.x>>l.b.y;
cin>>x1>>y1>>x2>>y2;
if(x1>x2)
swap(x1,x2);
if(y1<y2)
swap(y1,y2);
int flag =;
lt.a.x = x1;
lt.a.y=y1;
lt.b.x = x2;
lt.b.y =y1;
if(cross(l,lt))
flag =;
else{
lt.a.x=x2;
lt.a.y=y1;
lt.b.x=x2;
lt.b.y=y2;
if(cross(l,lt))
flag =;
else{
lt.a.x=x1;
lt.a.y=y2;
lt.b.x=x2;
lt.b.y=y2;
if(cross(l,lt))
flag =;
else{
lt.a.x = x1;
lt.a.y=y1;
lt.b.x=x1;
lt.b.y=y2;
if(cross(l,lt))
flag =;
}
}
}
if(flag)
cout<<"T"<<endl;
else{
if((x1<mmin(l.a.x,l.b.x))&&(mmax(l.a.x,l.b.x)<x2)&&(y2<mmin(l.a.y,l.b.y))&&(mmax(l.a.y,l.b.y)<y1))
cout<<"T"<<endl;
else
cout<<"F"<<endl;
}
}
return ;
}
poj 1410 计算几何的更多相关文章
- POJ 1410 Intersection (计算几何)
题目链接:POJ 1410 Description You are to write a program that has to decide whether a given line segment ...
- 线段和矩形相交 POJ 1410
// 线段和矩形相交 POJ 1410 // #include <bits/stdc++.h> #include <iostream> #include <cstdio& ...
- POJ 1410 Intersection(计算几何)
题目大意:题目意思很简单,就是说有一个矩阵是实心的,给出一条线段,问线段和矩阵是否相交解题思路:用到了线段与线段是否交叉,然后再判断线段是否在矩阵里面,这里要注意的是,他给出的矩阵的坐标明显不是左上和 ...
- poj 1410 线段相交判断
http://poj.org/problem?id=1410 Intersection Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
- [POJ 1410] Intersection(线段与矩形交)
题目链接:http://poj.org/problem?id=1410 Intersection Time Limit: 1000MS Memory Limit: 10000K Total Sub ...
- POJ 1556 计算几何+最短路
代码1: #include<iostream> #include<stdio.h> #include<string> #include<string.h> ...
- POJ 2954-Triangle(计算几何+皮克定理)
职务地址:POJ 2954 意甲冠军:三个顶点的三角形,给出,内部需求格点数. 思考:就像POJ 1265. #include <stdio.h> #include <math.h& ...
- POJ 1410 Intersection --几何,线段相交
题意: 给一条线段,和一个矩形,问线段是否与矩形相交或在矩形内. 解法: 判断是否在矩形内,如果不在,判断与四条边是否相交即可.这题让我发现自己的线段相交函数有错误的地方,原来我写的线段相交函数就是单 ...
- 简单几何(线段相交) POJ 1410 Intersection
题目传送门 题意:一个矩形和一条线段,问是否有相交 分析:考虑各种情况.坑点:给出的矩形的两个端点是无序的,还有线段完全在矩形内也算相交 /****************************** ...
随机推荐
- android样式跟主题
简单说类似与自定义控件,只不过自定义控件针对的是view 而样式与主题针对的是属性.元素 在TexvView中引入样式 layout.xml <?xml version="1.0&qu ...
- Android解析XML
在Android平台上可以使用Simple API for XML(SAX) . Document Object Model(DOM)和Android附带的pull解析器解析XML文件. 下面是本例子 ...
- android 强制设置横屏 判断是横屏还是竖屏
判断activity 是横屏还是竖屏 方法 1: //根据设备配置信息 Configuration cf= this.getResources().getConfiguration(); //获取设 ...
- 【DateStructure】 Charnming usages of Map collection in Java
When learning the usage of map collection in java, I found serveral beneficial methods that was enco ...
- dataset 用法(1)
DataSet是表和列结构在内存中的表示方式,DataSet支持多表.表间关系.数据约束等,和关系数据库的模型基本一致.(本质上是微型的数据库.包含一组DataTable对象和DataTable之间的 ...
- xcode KVC:Key Value Coding 键值编码
赋值 // 能修改私有成员变量 - (void)setValue:(id)value forKey:(NSString *)key; - (void)setValue:(id)value forKey ...
- org.openqa.selenium.SessionNotCreatedException: A new session could not be created.
解决方案 1. 重新插拔手机. 2. 检查appium端口是否被占用,如是,杀掉占用了改端口的进程,然后重启appium. 3.
- pushViewController自定义动画
实现的主要代码如下: CATransition *transition = [CATransition animation]; transition.duration = 1.0f; transiti ...
- 解决:sudo: parse error in /etc/sudoers near line 24 ...报错
ubuntu系统下由于添加用户权限的时候直接用的vim对 /etc/sudoers 文件编辑,保存退出的时候,再使用sudo su 等等命令一直报错如下: sudo: parse error in / ...
- android小知识之意图(intent)
android中的意图有显示意图和隐式意图两种, 显示意图要求必须知道被激活组件的包和class 隐式意图只需要知道跳转activity的动作和数据,就可以激活对应的组件 A 主activity B ...