タイトルはそれをすべて言っている、私は周りを検索していたし、まっすぐでポイントに何かを見つけることができませんでした。どのようにして点(x1、y1)&(x2、y2)の線をとって、矩形(xR、yR)の交点を調べるのですか?私はLine2Dパッケージでいくつかの交差法があるが、それをすべて設定する方法がわからないことを知った。誰かが私に交差点(衝突)をチェックするための正しい設定方法を教えてもらえますか?線と四角形の交差を確認する方法は?
答えて
2DグラフィックスAPIの使用可能なクラスを使用します。
これはあなたを教えてくれない何Rectangle r1 = new Rectangle(100, 100, 100, 100);
Line2D l1 = new Line2D.Float(0, 200, 200, 0);
System.out.println("l1.intsects(r1) = " + l1.intersects(r1));
は、線が交差していない場合
ありがとう、私は知っている必要はありませんどこで、ちょうど彼らがやっていないかどうかを知る必要があります。 –
矩形は4行です。ラインと四角形の4ラインとの交差を計算することができます。
与えられた2つの線の方程式は、xとyが等しいときに交差します。方程式を解く
Y = M1X + B1 Y = M2X + B2
あなたが得る必要があります。
X = B2 - B1 /(M1 - M2)。
m1 == m2の場合、線は平行であり、交差しないことに注意してください。この場合は、0で除算されていることに注意してください。
次に、無限線よりも大きいセグメントを扱っているため、セグメント内で交差がなくなるかどうかを確認します(XとYの両方が各セグメントの境界内にあるかどうかを確認してください)。
+1ちょうどいいように見えるので – MadProgrammer
ありがとうございました:) あなたの答えでうまくいきません:)ありがとう –
y = mx + c表現では縦線を扱うことができません。 – aaronsnoswell
はnullを返しところ...です。それをJavaにするために、同様の質問への別の応答からいくつかのCコードを修正しました。どのように/なぜそれがうまくいくのかを調べるのに気にしなかったが、私がそれを必要とした仕事はある。
static Point get_line_intersection(Line2D.Double pLine1, Line2D.Double pLine2)
{
Point
result = null;
double
s1_x = pLine1.x2 - pLine1.x1,
s1_y = pLine1.y2 - pLine1.y1,
s2_x = pLine2.x2 - pLine2.x1,
s2_y = pLine2.y2 - pLine2.y1,
s = (-s1_y * (pLine1.x1 - pLine2.x1) + s1_x * (pLine1.y1 - pLine2.y1))/(-s2_x * s1_y + s1_x * s2_y),
t = (s2_x * (pLine1.y1 - pLine2.y1) - s2_y * (pLine1.x1 - pLine2.x1))/(-s2_x * s1_y + s1_x * s2_y);
if (s >= 0 && s <= 1 && t >= 0 && t <= 1)
{
// Collision detected
result = new Point(
(int) (pLine1.x1 + (t * s1_x)),
(int) (pLine1.y1 + (t * s1_y)));
} // end if
return result;
}
ちょうどチェックしました。作品。 – Danon
- 1. 2次元の光線が四角と交差する
- 2. 線分が四角形を交差するかどうかを検出する
- 3. プレーヤーと四角の衝突と交差
- 4. CGRectが四角形の配列と交差しているかどうか確認してください。
- 5. 線分が矩形と交差するかどうかを確認する方法は?
- 6. 2線分が交差するかどうかを確認する方法は?
- 7. 線と三角形の交差点チェックが間違った交点を返す
- 8. 3Dの線と三角間の交差
- 9. キャンバスに破線の四角形を描く方法は?
- 10. 線形/非線形テクスチャマッピング歪みのある四角形
- 11. html5キャンバスアニメーションで四角形の四角形を変更する方法
- 12. Matlabで交差領域のない透明な四角形を描く
- 13. アンサーセットプログラミングで2つの長方形間の交差を確認する
- 14. javaと線と矩形の交差を見つける
- 15. OnRectangleToolClick:四角形の識別方法は?
- 16. SVG一角コーナー四角形/四角形
- 17. 複数の凸多角形交差
- 18. iPhone - 長方形の交差
- 19. ノード内の線を見ずにテキストノードと交差する線を描く方法
- 20. ジェスチャーと四角形
- 21. バックグラウンドで四角形の六角形を作成する方法は?
- 22. pyqtのマウスイベントを使用して線と四角形を描く
- 23. Dashcodeの四角形の四角形リストから行の値を取得する方法は?
- 24. 線の交点矩形 - 交点を見つける方法?
- 25. 3d空間で無限の線が直角プリズムと交差するかどうかをチェックする方法は?
- 26. 線ストリングと交差するすべてのポリゴンを返す方法は?
- 27. 最も速い水平線<->凸多角形交差アルゴリズムですか?
- 28. 穴と交差の長方形のコレクションをチェックする方法は?
- 29. R:線が交差する矩形の数
- 30. 四角形のための三角形のプログラムを変更する方法
* "ありがとう ダン" * sigを含めないでください。質問で。 「エリア」オブジェクト間の衝突は比較的容易に行うことができる。ここに[例](http://stackoverflow.com/a/14575043/418556)があります。 –
警告。ほぼすべてのJava 2Dグラフィックオブジェクトに対して、JavaのAreaクラスを使用して衝突/交差検出を一般的に行うことができるため、すべてのグラフィックオブジェクトに使用できると思われがちです。しかし、それはできません。なぜなら、あなたが '行'の領域を構築すると、行自体の領域が空になるからです。そのため、たとえ線があなたの他の領域にまたがっても、他の領域との交差点は常に空に戻ります。あなたは警告されています! –