この質問にはすでに多くの回答がありますが、私の特定の問題を見つけることができませんでした。私はいつも常に同じx値または同じy値を持つ正の整数だけの非常に特殊なケースを持っています。私はこのような2つの行を持っていて、どこに交差しているのか知る必要があるだけです。私は普通のアルゴリズムを使うことができると知っていますが、それはそれを完全に過ぎてしまうと思います。もし私に言わないならば。私がすでに持っているコードは私の3度目の試行であり、それは完全な混乱であり、私はそれが正しいアプローチを持っているとは思わない。テストは2本の線が交差しています
答えて
開始点と終了点によって決まる2つの行があります。
{ (x1,y1), (x2,y2) }, { (x3,y3), (x4,y4) }
2つの範囲が重なっているかどうかを確認する機能を作成します。
function rangeOverlaps(a1, a2, b1, b2) {
let x1 = Math.min(a1, a2),
x2 = Math.max(a1, a2),
y1 = Math.min(b1, b2),
y2 = Math.min(b1, b2);
return x1 <= y2 && y1 <= x2;
}
xとyの両方の範囲が重なっているかどうかを確認する機能。
function linesIntersect(x1, x2, x3, x4, y1, y2, y3, y4) {
return (rangeOverlaps(x1, x2, x3, x4) && rangeOverlaps(y1, y2, y3, y4));
}
function rangeOverlaps(a1, a2, b1, b2) {
let x1 = Math.min(a1, a2),
x2 = Math.max(a1, a2),
y1 = Math.min(b1, b2),
y2 = Math.min(b1, b2);
return x1 <= y2 && y1 <= x2;
}
function linesIntersect(x1, x2, x3, x4, y1, y2, y3, y4) {
return (rangeOverlaps(x1, x2, x3, x4) && rangeOverlaps(y1, y2, y3, y4));
}
let x1 = 0,
y1 = 2,
x2 = 2,
y2 = 2,
x3 = 0,
y3 = 2,
x4 = 1,
y4 = 2;
let intersects = linesIntersect(x1, x2, x3, x4, y1, y2, y3, y4);
console.log(intersects);
良い答えですが、1つの行が別の行の内部にある場合は、このケースを処理していないようです。 '{(0,2)、(2,2)}、{(0,2)、(1,2)}'は真を返す必要がある場合でもfalseを返します。私は追加のケースに追加するが、私はtherwが良い方法だと思う。あなたはそれを見せてもらえますか? – MegaIng
^rangeOverlaps関数を修正しました。データが常にx1 <= x2などで整形されていることが分かっている場合は、rangeOverlaps関数を少し短くすることができます。 – JasonB
非常に良い、ほぼ完璧です。最後の1つ:{(1,0)、(1,2)}、{(0,2)、(2,2)}は、{(1,0)、(1,2)}、{ 0,2)、(1,2)}はしないでください。これは可能ですか?現在は両方とも交差点を返さない。 – MegaIng
- 1. 2つの線ストリングの交差ジオパンダ
- 2. Dot/Graphvizで交差していない線を交差させる
- 3. Line2D.Doubleは線が交差していると言っています
- 4. 線分の交差、数値的に安定したテスト
- 5. 2つのオブジェクト間の線が交差する
- 6. 2つの光線の法線の交差を見つける
- 7. 2次元の光線が四角と交差する
- 8. SQLが交差していますか?
- 9. MySQLの線ストリングと線ストリングまたはポリゴンの交差
- 10. 2交差リスト
- 11. Ray- /セグメント交差テストのpython
- 12. 2線分が交差するかどうかを確認する方法は?
- 13. ActionScript:交差していない複数のオブジェクトが交差していますか?
- 14. 3Dの線と三角間の交差
- 15. MySQLのグレートサークル交差点(2つの道路が交差するのですか?)
- 16. 3Dで交差する平面線Java
- 17. 2つの線分が交差しているかどうかを判断するためのC++プロシージャ
- 18. 2つのコレクションの交差
- 19. Sql 2行の交差点
- 20. 2本の線(ImageViews)の交点を得る方法
- 21. 行が平行か、一致しているか、交差しているかを調べます。交差する場合、交差点を見つける
- 22. UMLクラス図 - 線が交差するのは悪い習慣ですか?
- 23. 誰かがこの交差テスト関数を説明してください
- 24. 線と三角形の交差点チェックが間違った交点を返す
- 25. 高速線交差のための線分セグメントコンテナ? (2D)
- 26. 境界線を定義して線の交差を簡単にする良い方法は何ですか?
- 27. Scilabで2つの曲線の交差を見つけるには?
- 28. R:線が交差する矩形の数
- 29. MySQLジオメトリの交差が交差しない結果を生成する
- 30. Openpyxl別の境界線との交差点で境界線が破損する
あなたのコードを意味する「行が常に同じx値または同じy値のいずれかを持って、常に正の整数」を何 – Turo
を表示してください?あなたのラインは常に垂直か、それとも常に水平ですか? – elsyr
@elsyrこれは変更される可能性があります。しかし、それらは常にx軸またはy軸に平行です。 – MegaIng