Recast判定两条线段是否相交

  • 基础知识:

1 亦或操作

1^1=0  0^0=0 1^0=1  0^1=1

2 点和直线的关系

参考:https://blog.csdn.net/hjssss/article/details/86539343

  • 具体算法

当ab直线和cd直线相交,则存在 a在线段ab的左边,d在线段ab的右边

即 l1 = left(a, b,c) = 1 , l2 = left(a,b,d) = 0

 

Recast 算法如下:

1 首先判定是否共线,如果共线直接返回,再判定c,d两点和ab直线的位置关系(不包含点在直线上)

           2 共线判定

                

          3 判定点和直线关系(在直线左边,在直线上,在直线右边)

                

           4  取反再进行异或操作,在直线两侧值为1,在直线同侧,值为 0

                 

猜你喜欢

转载自blog.csdn.net/hjssss/article/details/86589828