http://poj.org/problem?id=1410

题目大意:给你一个线段和矩形的对角两点  如果相交就输出'T'  不想交就是'F'

注意:

1,给的矩形有可能不是左上 右下  所以要先判断的

2,线段在矩形的内部输出T

3,如果交点是矩形的顶点的话 是不相交的

情况有点多  刚开始考虑的太少   wa的我心疼

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#include<math.h>
#include<queue>
#include<algorithm>
#include<iostream> using namespace std;
#define N 20
const double ESP = 1e-;
#define INF 0x3f3f3f3f
#define memset(a,b) memset(a,b,sizeof(a)) struct Point
{
double x,y;
Point(double x=,double y=):x(x),y(y) {}
Point operator - (const Point &temp)const
{
return Point(x-temp.x,y-temp.y);
}
int operator * (const Point &temp)const
{
double t=(x*temp.y)-(y*temp.x);
if(t>ESP)
return ;
if(fabs(t)<ESP)
return ;
else
return -;
}
} p[N],j; Point line(Point u1,Point u2,Point v1,Point v2)///求交点模板
{
Point ret=u1;
double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))/((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x)); ret.x+=(u2.x-u1.x)*t;
ret.y+=(u2.y-u1.y)*t; return ret;
} int main()
{
int n;
scanf("%d",&n);
while(n--)
{
j.x=j.y=INF;
memset(p,);
double x1,x2,y1,y2;
double a,b,c,d;
scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
if(a>c)
swap(a,c),swap(b,d);
int u,D;
u=max(b,d);
D=min(b,d);
if(x1>=a && x1<=c && x2>=a && x2<=c && y1>=D && y1<=u && y2>=D && y2<=u)
{
printf("T\n");
continue;
}
///判断线段与矩形的一条边是否相交
p[]=Point(x1,y1);
p[]=Point(x2,y2);
p[]=Point(a,b);
p[]=Point(c,b);
p[]=Point(c,b);
p[]=Point(c,d);
p[]=Point(a,b);
p[]=Point(a,d);
p[]=Point(a,d);
p[]=Point(c,d);
int k,kk;
int flag=;
for(int i=; i<=; i++)
{
k=abs((p[]-p[i*-])*(p[i*]-p[i*-])+(p[]-p[i*-])*(p[i*]-p[i*-]));
kk=abs((p[i*-]-p[])*(p[]-p[])+(p[i*]-p[])*(p[]-p[]));
if(k!= && kk!=)///如果相交
{
if((p[]-p[i*-])*(p[i*]-p[i*-])== && (p[]-p[i*-])*(p[i*]-p[i*-])==)///共线
{
if(i== || i==)
{
if((p[].x>a && p[].x<c)||(p[].x>a && p[].x<c) || (p[].x<=a && p[].x>=c) || (p[].x<=a && p[].x>=c))
{
flag=;
break;
}
}
else
{
if((p[].y>D && p[].y<u)||(p[].y>D && p[].y<u) || (p[].y<=D && p[].y>=u) || (p[].y<=D && p[].y>=u))
{
flag=;
break;
}
}
}
j=line(p[],p[],p[i*],p[i*-]);
if(i==)
if(j.x>a && j.x<c && j.y==b)///如果交点在a和c之间(不包括a c)
{
flag=;
break;
}
if(i==)
{
if(j.x==c && j.y>D && j.y<u)
{
flag=;
break;
}
}
if(i==)
{
if(j.x==a && j.y>D && j.y<u)
{
flag=;
break;
}
}
if(i==)
{
if(j.x>a && j.x<c && j.y==d)
{
flag=;
break;
}
}
}
}
if(flag==)
printf("F\n");
else
printf("T\n");
}
return ;
}

Intersection--poj1410(判断线段与矩形的关系)的更多相关文章

  1. poj1410(判断线段和矩形是否相交)

    题目链接:https://vjudge.net/problem/POJ-1410 题意:判断线段和矩形是否相交. 思路:注意这里的相交包括线段在矩形内,因此先判断线段与矩形的边是否相交,再判断线段的两 ...

  2. poj 1410 Intersection (判断线段与矩形相交 判线段相交)

    题目链接 Intersection Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12040   Accepted: 312 ...

  3. POJ 1410 Intersection(判断线段交和点在矩形内)

    Intersection Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9996   Accepted: 2632 Desc ...

  4. POJ 1410--Intersection(判断线段和矩形相交)

    Intersection Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16322   Accepted: 4213 Des ...

  5. Intersection - POJ 1410(线段与矩形是否相交)

    题目大意:给一个线段和一个矩形,判断线段是否和矩形有公共点.   分析:用矩形的四个边当线段判断与所给的线段是否有交点,需要注意的是给的矩形是不标准的,需要自己转换,还需要注意线段有可能在矩形内部. ...

  6. POJ 1410 判断线段与矩形交点或在矩形内

    这个题目要注意的是:给出的矩形坐标不一定是按照左上,右下这个顺序的 #include <iostream> #include <cstdio> #include <cst ...

  7. [POJ 1410] Intersection(线段与矩形交)

    题目链接:http://poj.org/problem?id=1410 Intersection Time Limit: 1000MS   Memory Limit: 10000K Total Sub ...

  8. POJ 1410 Intersection (线段和矩形相交)

    题目: Description You are to write a program that has to decide whether a given line segment intersect ...

  9. POJ 1410 Intersection --几何,线段相交

    题意: 给一条线段,和一个矩形,问线段是否与矩形相交或在矩形内. 解法: 判断是否在矩形内,如果不在,判断与四条边是否相交即可.这题让我发现自己的线段相交函数有错误的地方,原来我写的线段相交函数就是单 ...

随机推荐

  1. 1   开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。   本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括:    正确的使用数据库MetaData方法    只获取需要的数据    选用最佳性能的功能    管理连

    1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你. 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的 ...

  2. LINUX 安装tsung 对OPENFIRE 进行压力测试

    参考资料:  http://www.centoscn.com/image-text/install/2014/0818/3503.html  http://my.oschina.net/jieluck ...

  3. iOS端架构、基本组成与使用说明

    一. app整体描述 app的描述:需求文档+接口文档+程序架构. 说明:新入手的开发人员必须拿到这三个说明文档才能整体了解app功能. 二.app架构描述 1.架构视图 2.分层结构说明 [1] a ...

  4. 前端什么是BFC

    什么是BFC? 全称块级格式化上下文?什么意思不懂.看了好多博客,基本都是抄的,真心都不是大白话.我今天来总结一下,用菜鸟级别的语言来描述. BFC 应该可以抽象成一个 独立的个体,出淤泥而不染的白莲 ...

  5. Java异常归纳

      1.使用Tomcat运行“播报哥架构”出现的两大异常 1.1 监听器异常 详细情况:部署好Maven项目,启动TOMCAT提示如下错误 java.lang.ClassNotFoundExcepti ...

  6. html归纳

      onload的用法 表格属性 定时器(测试能否让for循环暂停5秒) 实现表格的滚动条效果 ① table中th的样式:  white-space: nowrap;  单元格内容不换行:② 设置装 ...

  7. WPF知识点全攻略01- WPF相对WinFrom的优缺点

    对比WPF和WinFrom前,先来了解下GUI现阶段在用的其他一些开发技术: MFC:微软基础类库,以C++的形式封装了Windows API,加上一些实用工具类. QT:奇趣科技开发的跨平台C++图 ...

  8. core 中使用 nlog

    引包 代码 public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory logFac) ...

  9. JavaEE-09 Ajax与jQuery在JavaEE项目中的使用

    学习要点 JavaScript实现Ajax jQuery实现Ajax JSON JSON-LIB FastJSON JavaScript实现Ajax 认识Ajax 旧版百度地图 百度搜索自动补全 百度 ...

  10. C字符串指针遇到的问题

    看下面的示例代码: int main() { char *ptr = "GeeksQuiz"; printf("%c\n", *&*&*ptr) ...