2017-10-12 4 views
0

私は、2つの基点など[[5,10],[10,15]]として格納された矩形のリストを持っています。それらはすべて1つの点から別の点への線と交差することがわかります。どの矩形が最初に線と交差するのかを調べる方法は?どの矩形の行が最初にヒットするか

+0

ラインの開始点の「x」座標とその下方の「x」座標との間の絶対差が最も小さいものが最も小さい。 – Kasramvd

+1

種類はありますが、行が後ろ向きになるか上向きになるか –

+0

これはすべて、最初に何を意味し、何が座標系の中心になるかに依存し、行には方向性がありません。また、矩形を垂直方向にソートしたときのように2つの矩形の差が等しい場合、垂直方向にも線が来る場合は、 'y'の違いを調べることができます。 – Kasramvd

答えて

1

ライン(二点によって定義される)パラメトリック方程式を有する

X = X0 + t * (X1 - X0) 
Y = Y0 + t * (Y1 - Y0) 

代替左または右(ライン方向に応じて)矩形のエッジが最初の方程式、上部または右座標の座標 - 第2式および検索エッジとの交差を提供するパラメータtの最小値。

たとえば、最初の方程式の矩形の左端の値をtlとします。このtl値のYを2番目の式から探し、Ytop..bottomの範囲にあるかどうかを確認します。

矩形の位置とサイズに関する追加の制限事項や情報がありますか?矩形は一定に設定されていて、多くの行を使用していますか?または線が一定で、長方形のセットがいくつかありますか?

+0

それについて書きました。 'X1-X0'または' Y1-Y0'が0またはゼロに非常に近い(垂直線と水平線)場合は注意が必要です。それ以外に、四角形が重ならないと、最初の点に最も近い角があるものが勝者ですが、私は完全にはわかりません。これらは軸合わせ矩形であるため、交差点を見つけるだけでおそらく高速です。 – jdehesa

関連する問題