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
题目传送门 题意:一个矩形和一条线段,问是否有相交 分析:考虑各种情况.坑点:给出的矩形的两个端点是无序的,还有线段完全在矩形内也算相交 /****************************** ...
随机推荐
- Minimum Inversion Number(归并排序)
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- phpExcel在封装
<?php /** * 数组生成Excel * @author zouhao zouhao619@gmail.com * 使用示例 * $excel =new Excel(); $data=ar ...
- <学习>.NET的反射基础
关键词 Assembly 使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例. Module 通过它可以获取包含模块的程序集以及模块中的类等, ...
- 推荐两个不错的CAD二次开发(.Net)手册
推荐两个不错的CAD二次开发(.Net)手册 http://www.mjtd.com/helpcenter/netguide/index.html http://www.ceesky.com/book ...
- HTML之学习笔记(九)表单
html的表单标签是一个系列,用开闭的<form>标签包裹起来的组合.表单的作用是将我们要向服务器提交数据的数据包含起来,然后提交到服务器处理.(使用表单是浏览器提交客户端数据到服务端的方 ...
- 链表的实现 -- 数据结构与算法的javascript描述 第六章
链表 链表是由一组节点组成的集合.每个节点都使用一个对象的引用指向它的后继.指向另一个节点的引用叫做链 结构示意图 : 链表头需要我们标识 head { element:head,next:obj1 ...
- js中字符串方法
字符串方法: 1. charAt(索引值)//通过索引值获取字符串中对应的值 例如: var str='sdf123'; alert(str.charAt(0));//结果弹出第一个索引对应的值:s
- ViEmu for VS2013-3.2.1 破解(转)
ViEmuVS2013-3.2.1 破解 VS升级到2013后,作为一个Vimer,自然需要更新最新的ViEmu插件,因为现在离了Vim,写代码已经寸步难行了. ViEmu 3.2.1的破解其实和 ...
- linux install nginx error
1 2 3 4 5 6 7 8 9 10 11 [mahao01@127.0.0.1 nginx-1.2.9]$ make make -f objs/Makefile make[1]: Enterin ...
- bzoj 1088: [SCOI2005]扫雷Mine
题目链接 1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2525 Solved: 1495[Submi ...