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
题目传送门 题意:一个矩形和一条线段,问是否有相交 分析:考虑各种情况.坑点:给出的矩形的两个端点是无序的,还有线段完全在矩形内也算相交 /****************************** ...
随机推荐
- 设计模式- 主动对象(Active Object)
译者注:1.对象分为主动对象和被动对象,主动对象内部包含一个线程,可以自动完成动作或改变状态,而一般的被动对象只能通过被其他对象调用才有所作为.在多线程程序中,经常把一个线程封装到主动对象里面.2.在 ...
- md笔记——微信JS接口
微信js接口 隐藏微信中网页右上角按钮 document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { Weix ...
- 使用 AngularJS 从零构建大型应用
0.导言 1.准备工作 2.构建框架 3.丰富你的directives 4.公用的services 5.用controllers组织业务 导言 纵览线上各种AngularJS教程,大部分都是基础与一些 ...
- JavaScript之call()和apply()方法详解
简介:apply()和call()都是属于Function.prototype的一个方法属性,它是JavaScript引擎内在实现的方法,因为属于Function.prototype,所以每个Func ...
- 蓝桥杯试题集【Java】
一.Fibonacci数列 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. ...
- js简单实现链式调用
链式调用实现原理:对象中的方法执行后返回对象自身即可以实现链式操作.说白了就是每一次调用方法返回的是同一个对象才可以链式调用. js简单实现链式调用demo Object.prototype.show ...
- CF 599D Spongebob and Squares(数学)
题目链接:http://codeforces.com/problemset/problem/599/D 题意:定义F(n,m)为n行m列的矩阵中方阵的个数,比如3行5列的矩阵,3x3的方阵有3个.2x ...
- socket select模型
由于socket recv()方法是堵塞式的,当多个客户端连接服务器时,其中一个socket的recv调用时,会产生堵塞,使其他连接不能继续. 如果想改变这种一直等下去的焦急状态,可以多线程来实现(不 ...
- Hive入门之UDFS函数
一.UDFS函数介绍 1. 基本UDF (1)SHOWFUNCTIONS:这个用来熟悉未知函数. DESCRIBE FUNCTION<function_name>; (2)A IS NUL ...
- java新特性之可变参数
public class NewDemo01 { public static void main(String[] args) { System.out.print(" ...