判断线段相交思想
![此博文包含图片](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
这个问题是在我那个比赛代码中有同学提出来的,不知道是哪位同学。。。。。也没自报家名。。。。。
现在进入正题:
比如两个线段,AB,CD,坐标分别如下图所示:
![判断线段相交思想 判断线段相交思想](https://i-blog.csdnimg.cn/blog_migrate/9040faec49ca23d3680a8feac5e94e84.jpeg)
在这里介绍一个判断线段相交的方法,使用差积,就是向量的差积,大家都知道,向量差乘的结果仍然是个向量,其方向与差乘的两个向量的前后顺序有关,比如我计算AB(为(x1b-x1a,y1b-y1a))向量与AC(为(x2a-x1a,y2a-y1a))向量的差积,AB向量与AD(为(x2b-x1a,y2b-y1a))向量的差积,计算的这两个结果其向量(记为a向量和b向量)的方向必定相反,且都垂直ABCD所在的平面,那么a向量与b向量的点积一定小于0(不考虑点在线段上的情形)。
另AB向量为(x1,y1)
AC向量为(x2,y2)
AD向量为(x3,y3)
则:
(x1*y2-x2*y1)*(x1*y3-x3*y1)<0
此时,C,D两点必定在AB的延长线的两侧。
同理判断A,B两点在CD的延长线的两侧即可。