2

接続すると形状を形成するグラフにプロットできる点のセットがあります (境界ボックスは正しい用語でしょうか?)。別のポイントがこのボックス内にあるかどうかを調べるにはどうすればよいですか?

ボックスの例を次に示します。

var box = [[181,7500],[181,11279],[185,12500], [196.4,12500],[196.4,7500]];
var point_inside_box = [188,10000];
var point_outside_box = [182,12000];

以下のように視覚化すると、これらのポイントがボックスの外にあるかどうかを簡単に確認できます。

境界ボックス

少し数学を使ってJavaScriptでこれを行う方法はありますか?

4

2 に答える 2

2

これを行う1つの方法は、方向を選択し、理論的にその方向に永遠に移動し続ける場合に、交差する辺の数を把握することです。奇数の場合、ポイントはボックス内にあります。偶数の場合、ポイントはボックスの外側にあります。

参照: http: //local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/

于 2012-06-14T16:14:11.080 に答える
1

方法の1つは、ベクトルのすべての外積(PA_i、PA_ {i + 1})が同じ符号であるかどうかを確認することです。もしそうなら、ポイントは内側にあり、そうでなければ外側にあります。(Pはチェックするポイント、ポリゴンはA_1A_2 ... A_nです。)

(a, b)2次元の場合、ベクトルの外積(c, d)は単なる数ad - bcです。

この計算は、ポイントA_iが凸多角形を形成している場合に有効です。

于 2012-06-14T16:14:10.343 に答える