我已经找到了一种测试两个一维线段/范围的方法.
因此将范围定义为:
[min, max]
Run Code Online (Sandbox Code Playgroud)
给出两个范围实例:
a = [min, max]
b = [min, max]
Run Code Online (Sandbox Code Playgroud)
我使用以下内容来测试它们是否相交:
(a.max - b.min) * (b.max - a.min) >= 0.
Run Code Online (Sandbox Code Playgroud)
我认为这是一个单维的跨产品,所以我的问题是:
这种解决方案是否被归类为一维交叉产品或其他什么?
怎么样:
intersects = !((a.max < b.min) || (b.max < a.min))
Run Code Online (Sandbox Code Playgroud)
这更快(没有多次涉及,一个不错的编译器将优化NOT)和可读性.