代码段解析:
const intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
第一部分:(yi > y) !== (yj > y)
作用:检查点 (x,y)
的垂直位置是否跨越多边形的当前边。
-
yi > y
和yj > y
-
分别检查边的两个端点
(xi,yi)
和(xj,yj)
是否在点(x,y)
的上方。 -
例如:
-
若
yi > y
为true
,表示端点i
在点的上方。 -
若
yj > y
为false
,表示端点j
在点的下方。
-
-
-
!==
异或逻辑-
只有当两个端点在点的 不同侧(一个在上,一个在下)时,表达式为
true
。 -
这表示当前边 可能</
-