5

2 つの 1 次元の線分/範囲をテストする方法を考え出しました。

したがって、範囲を次のように定義します。

[min, max]

範囲の 2 つのインスタンスが与えられた場合:

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

以下を使用して、それらが交差するかどうかをテストします。

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

これは一次元の外積だと思うので、私の質問は次のとおりです。

このソリューションは、1 次元クロス積または何か他のものとして分類されますか?

4

2 に答える 2

8

どうですか:

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

その方が高速で (乗算が不要で、適切なコンパイラが NOT を最適化して除去します)、同じくらい読みやすいです。

于 2009-10-13T08:49:57.550 に答える
1

1 次元の外積は、単に実数x*yの場合xy両方の実数の場合です。これを 1 次元の外積と呼ぶこともできると思いますが、それは単に掛け算の派手な名前です。

かわいいトリックですが、数学的に特別な結果をもたらすとは思いません。外積は、線分ではなくベクトルに関するものです。

于 2009-10-13T08:32:36.973 に答える