5

我已经制定了一种方法来测试两个一维线段/范围。

因此将范围定义为:

[min, max]

给定两个范围实例:

a = [min, max] 
b = [min, max]

我使用以下内容来测试它们是否相交:

(a.max - b.min) * (b.max - a.min) >= 0.

我认为这是一个一维交叉产品,所以我的问题是:

该解决方案是归类为一维交叉产品还是其他?

4

2 回答 2

8

怎么样:

intersects = !((a.max < b.min) || (b.max < a.min))

这更快(不涉及乘法,一个体面的编译器将优化 NOT 离开)并且同样可读。

于 2009-10-13T08:49:57.550 回答
1

一维叉积仅x*y适用于两个xy数。所以我想你可以称之为一维叉积,但这只是乘法的一个花哨的名字。

这是一个可爱的技巧,但我认为它在数学上没有任何特殊后果。叉积都是关于向量,而不是线段。

于 2009-10-13T08:32:36.973 回答