计算几何-线段相交

7人阅读 评论(0) 收藏 举报
分类:

快速排斥:不能处理端点为交点的情况;

快速排斥原理:用给出的两条线段作为各自的对角线建立矩形,如果矩形不相交,那么线段一定不相交。

具体实现:假设第一条线段的两个端点分别为(p1,p2)(p3,p4);

if(
min(p1.x,p2.x) <= max(p3.x,p4.x)&&
min(p3.x,p4.x) <= max(p1.x,p2.x)&&
min(p1.y,p2.y) <= max(p3.y,p4.y)&&
min(p3.y,p4.y) <= max(p1.y,p2.y)
) return true;

else return false;

缺点:无法处理下图的情况

《计算几何--快速排斥实验与跨立实验》

-----------------------------------------------------------------------------------------------

跨立实验:为了弥补快速排斥的不能处理端点的问题,跨立实验出现。

原理:如果两条线段相互跨过,那么任意一条直线的连个端点一定会出现在另一条线段的两侧,利用叉乘分别判断两条线段就可以了

叉乘: k = x1 * y2 – x2 * y1 ,

if(k>0) {x 在 y 的顺时针方向} 

if(k<0){x 在 y 的逆时针方向}

 

判断跨越:

四个Point类 p1,p2与q1,q2;

如果满足:((p1-q1)×(q2-q1))*((q2-q1)×(p2-q1)) >  0 &&  ((q1-p1)×(p2-p1))*((p2-p1)×(q2-p1)) >  0 

那么这两条线段就是相交的;

上面的式子前面一个是判断p1,p2是不是分布在q1,q2的两侧,第二个则是判断q1,q2是不是分布在p1,p2的两侧;


查看评论

计算几何----判断线段相交(一)

判断线段相交: 两个线段的交点个数可能有0个 1个或者无数个 判断两个线段相交,可以按照如下步骤: 判断A点B点是否在线段CD的两侧,即计算叉积时异号 判断C点和D点是否在线段AB的两侧,即...
  • liangzhaoyang1
  • liangzhaoyang1
  • 2016-04-07 22:54:27
  • 1436

计算几何---判断线段相交(二)

计算几何中最基本重要的算法之一~判断线段相交基础。 只需判断线段是否同时满足 1.快速排斥实验 2.跨立实验 1.快速排斥实验: 设以线段P1P2为对角线的矩形为T,...
  • liangzhaoyang1
  • liangzhaoyang1
  • 2016-04-07 22:59:32
  • 1101

计算几何之线段性质(一):判断两线段相交

给定两个点: typedef  struct {   double  x, y; } Point; Point A1,A2,B1,B2; 首先引入两个实验: a.快速排斥实验 设以线段A1A2和线段B...
  • AC_Gibson
  • AC_Gibson
  • 2015-01-30 11:36:30
  • 457

【计算几何】求线段相交交点坐标

求线段相交交点 首先,我们设 (AD向量 × AC向量) 为 multi(ADC) ; 那么 S三角形ADC = multi(ADC)/2 。 由三角形DPD1 与 三角形CPC1 相似;可得 |D...
  • qq_33199236
  • qq_33199236
  • 2017-03-04 10:57:00
  • 226

计算几何之判断线段相交

链接:http://blog.csdn.net/chenbang110/article/details/7742535 /* (A1-B1) × (B2-B1) * (B2-B1) ×...
  • migu77777
  • migu77777
  • 2016-08-11 11:26:49
  • 525

1264 线段相交(计算几何)

1264 线段相交 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相...
  • fenghoumilin
  • fenghoumilin
  • 2017-03-15 16:41:21
  • 561

poj1039(计算几何)线段相交

题意:给一个管道求光线能穿到的最大x坐标。 解法:通过旋转光线一定可以使得光线接触一个上点和一个下点。枚举接触的上下点,然后逐一判断光线是否穿过每个拐点面。碰到一个拐点面没有穿过的,则是因为与其左...
  • xiefubao
  • xiefubao
  • 2014-05-20 20:35:17
  • 663

计算几何 ( 判断线段相交 )——You can... ( HDU 1086 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1086 分析&&题解: 给出N条线段,每条线段告诉你起始点和结束点,判断这N条线段构成多少条交点,...
  • FeBr2
  • FeBr2
  • 2016-07-24 15:49:07
  • 402

计算几何:线段判交模板--ACM

线段判交--ACM 给定两个点: typedef  struct {   double  x, y; } Point; Point A1,A2,B1,B2; ...
  • Enjoying_Science
  • Enjoying_Science
  • 2015-07-04 17:37:25
  • 800

计算几何-判断两线段是否相交(模板)

判断线段相交有很多的方法,现在先整理一下最简单的方法,由于时间问题先整理模板,过段时间再整理理论 struct Point { double x; double y; }p1...
  • qq_29980371
  • qq_29980371
  • 2017-08-15 12:30:22
  • 148
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 2248
    排名: 1万+
    最新评论