版权声明:本文为博主原创文章,若有错误之处望大家批评指正!转载需附上原文链接,谢谢! https://blog.csdn.net/summer_dew/article/details/83982244
线相关的算法
总表
算法 | 说明 | 方法 | 判定 | 补充 |
---|---|---|---|---|
判断两矢量相互之间的顺逆时针关系 | 矢量P=(x1,y1),Q=(x2,y2) | P×Q=x1y2-x2y1 | P×Q>0 => P在Q的顺时针方向 P×Q<0 => P在Q的逆时针方向 P×Q=0 => P与Q共线,但可能同向也可能反向 |
|
折线段的拐向判断 | 有公共端点的线段p0p1和p1p2 | result=(p2-p0)×(p1-p0) | result>0 => p0p1在p1点拐向右侧后得到p1p2 reslut<0 => p0p1在p1点拐向左侧后得到p1p2 reslut=0 => p0、p1、p2三点共线 |
|
点是否在线段上 | 点Q是否在线段P1P2上 | 条件1:(Q-P1)×(P2-P1)=0 条件2:Q在以P1、P2为对角顶点的矩形内 |
条件1 => 保证Q在P1P2上 条件2 => 保证Q不在P1P2的延长线或反向延长线上 |
|
判断两线段是否相交(算法一) | 线段P1P2、线段Q1Q2是否相交 | 条件1:快速排斥试验 条件2:跨立试验 |
跳转 | |
判断两线段是否相交(算法二) | 线段AB、线段CD是否相交 | 公式法 | 跳转 | |
求两条共线的线段的交点 | ||||