誰もがこれに対して簡単なアルゴリズムを持っていますか?回転や何もする必要はありません。 2点から作成された線分が四角形と交差するかどうかを確認するだけです線分が四角形を交差するかどうかを検出する
4
A
答えて
4
このコードは、このトリックを行う必要があります。線が辺と交差する場所を確認し、それが正方形の幅内にあるかどうかを確認します。 intesectionの数が返されます。
float CalcY(float xval, float x0, float y0, float x1, float y1)
{
if(x1 == x0) return NaN;
return y0 + (xval - x0)*(y1 - y0)/(x1 - x0);
}
float CalcX(float yval, float x0, float y0, float x1, float y1)
{
if(x1 == x0) return NaN;
return x0 + (yval - y0)*(y1 - y0)/(x1 - x0);
}
int LineIntersectsSquare(int x0, int y0, int x1, int y1, int left, int top, int right, int bottom)
{
int intersections = 0;
if(CalcX(bottom, x0, y0, x1, y1) < right && CalcX(bottom, x0, y0, x1, y1) > left ) intersections++;
if(CalcX(top , x0, y0, x1, y1) < right && CalcX(top , x0, y0, x1, y1) > left ) intersections++;
if(CalcY(left , x0, y0, x1, y1) < top && CalcY(left , x0, y0, x1, y1) > bottom) intersections++;
if(CalcY(right , x0, y0, x1, y1) < top && CalcY(right , x0, y0, x1, y1) > bottom) intersections++;
return intersections;
}
NB:このコードは、理論的であり、それは
1
0
をテストされていないと、正しくない可能性があります。ここの方法だ:
- X-COORD
で四角の頂点を並べ替えます - X-COORD
によって線の終点ソート - (X-COORDによって)真ん中の2つの各ラインのMINX端から角度を計算する正方形の頂点を
- ライン
の角度を計算する - 行のif角度は可能な範囲内ですあなたがしなければならないのは、長さのチェックです。ラインのmaxXの終わり>正方形のminXの頂点です。
この場合、正方形が線に直接面していると、正方形の最初の辺を確認してください。
関連する問題
- 1. 線と四角形の交差を確認する方法は?
- 2. 2次元の光線が四角と交差する
- 3. 円がLibGDXの上半分または下半分の四角形と交差するかどうかの検出
- 4. 2線分が交差するかどうかを確認する方法は?
- 5. 線分が矩形と交差するかどうかを確認する方法は?
- 6. CGRectが四角形の配列と交差しているかどうか確認してください。
- 7. 超四角形の検出
- 8. 行がC#で交差するかどうかを検出する方法は?
- 9. MKPolylineが自己交差線を検出する目的C
- 10. 無限線と線分が交差するかどうかを判断する式は?
- 11. 線と三角形の交差点チェックが間違った交点を返す
- 12. スプライトと交差する光線を検出する
- 13. 円が無限線と交差するかどうかを決定する
- 14. シンプルな3D AABB線分の衝突検出(交差点)
- 15. プレーヤーと四角の衝突と交差
- 16. UISearchBarを四角形から四角形に変更するにはどうすればよいですか?
- 17. 3d空間で無限の線が直角プリズムと交差するかどうかをチェックする方法は?
- 18. 複数の線分を交差する線分に分割する
- 19. 線形/非線形テクスチャマッピング歪みのある四角形
- 20. UIViewが他のUIViewと交差しているかどうかを検出
- 21. 自己交差ポリゴンを分割すると、多角形が返されます。
- 22. 矩形が交差しているかどうかをチェックする方法は?
- 23. 2つの線分が交差しているかどうかを判断するためのC++プロシージャ
- 24. どのようにして、光線が交差する三角形の法線ベクトル(またはハンドル)を見つけることができますか?
- 25. 最も速い水平線<->凸多角形交差アルゴリズムですか?
- 26. 斜角が円と交差する部分を計算する
- 27. 別のクラスの四角形間の衝突を検出する
- 28. R:線が交差する矩形の数
- 29. Matlabで交差領域のない透明な四角形を描く
- 30. 単純な四角形の上端線を検出しないハーフライン
私はCalcXがx0 +(yval - y0)*(x1 - x0)/(y1 - y0)を返す必要があると思います。 –