Recast判定两条线段是否相交
- 基础知识:
1 亦或操作
1^1=0 0^0=0 1^0=1 0^1=1
2 点和直线的关系
参考:https://blog.****.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