博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Intersection - POJ 1410(线段与矩形是否相交)
阅读量:5068 次
发布时间:2019-06-12

本文共 2070 字,大约阅读时间需要 6 分钟。

题目大意:给一个线段和一个矩形,判断线段是否和矩形有公共点。
 
分析:用矩形的四个边当线段判断与所给的线段是否有交点,需要注意的是给的矩形是不标准的,需要自己转换,还需要注意线段有可能在矩形内部。
 
代码如下:
===============================================================================================================================================
#include
#include
#include
using namespace std;const int MAXN = 1e3+7;const int oo = 1e9+7;const double EPS = 1e-12;struct point{ double x, y; point(double x=0, double y=0):x(x), y(y){} point operator - (const point &t) const{ return point(x-t.x, y-t.y); } int operator * (const point &t) const{ double ans = x*t.y - y*t.x; if(ans > EPS)return 1; if(fabs(ans) < EPS)return 0; return -1; }};struct segment{ point A, B; segment(point A=0, point B=0):A(A), B(B){} bool Intersect(const segment &t)const{ int t1 = (A-B) * (t.A-B); int t2 = (A-B) * (t.B-B); if(t1==0 && t.A.x>=min(A.x, B.x) && t.A.x <= max(A.x, B.x) && t.A.y>=min(A.y, B.y) && t.A.y <= max(A.y, B.y))return true; if(t2==0 && t.B.x>=min(A.x, B.x) && t.B.x <= max(A.x, B.x) && t.B.y>=min(A.y, B.y) && t.B.y <= max(A.y, B.y))return true; if(t1==0&&t2==0 && max(t.A.x,t.B.x)>=max(A.x,B.x) &&min(t.A.x,t.B.x)<=min(A.x,B.x) && max(t.A.y,t.B.y)>=max(A.y,B.y) &&min(t.A.y,t.B.y)<=min(A.y,B.y) )return true; if(t1*t2 == -1)return true; return false; }};bool Find(segment a, segment sg[], int N){ for(int i=0; i
B.x)swap(A.x, B.x); if(A.y < B.y)swap(A.y, B.y); sg[0] = segment(A, point(A.x, B.y)); sg[1] = segment(A, point(B.x, A.y)); sg[2] = segment(B, point(A.x, B.y)); sg[3] = segment(B, point(B.x, A.y)); /// printf("Case %d: ", t++); if(Find(a, sg, 4) == true || (a.A.x>=A.x&&a.A.x<=B.x && a.A.y>=B.y && a.A.y <= A.y) ) printf("T\n"); else printf("F\n"); } return 0;}/**24 2 4 0 4 3 9 6**/

 

转载于:https://www.cnblogs.com/liuxin13/p/4793091.html

你可能感兴趣的文章
页面中公用的全选按钮,单选按钮组件的编写
查看>>
判断文本框输入的文字长度
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
Scaling Pinterest - From 0 To 10s Of Billions Of Page Views A Month In Two Years
查看>>
SelectSort 选择排序
查看>>
关于android 加载https网页的问题
查看>>
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
小知识:js如何更改css样式
查看>>
PHP count down
查看>>
JVM参数调优:Eclipse启动实践
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>
strlen函数
查看>>
Java中的String,StringBuilder,StringBuffer三者的区别
查看>>
Laxcus大数据管理系统2.0(12)- 第十章 运行
查看>>
Python爬虫
查看>>
消息队列的理解总结
查看>>
LDA
查看>>