2つの線分は交わるか
長さの決まった2本の線分が本当に交わるかが分かります。(0, 0)から(4, 4)と、(0, 4)から(4, 0)の線分は、どちらも中間の(2, 2)で交差します。端点での接触や重なりも判定します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- X1
- 0
- Y1
- 0
- X2
- 4
- Y2
- 4
- X3
- 0
- Y3
- 4
- 種類
- proper
- X
- 2
- Y
- 2
- T
- 0.5
この線分交差チェッカーは、平面幾何の古典的な問いに答えます。4つの端点で与えられた2本の閉線分は交差または接触するか、するとすればどこか。x1, y1, x2, y2 を線分 AB、x3, y3, x4, y4 を線分 CD として有限な8個の数を指定すると、エンジンは A に t 倍の (B 引く A) を加えたものが C に u 倍の (D 引く C) を加えたものに等しいという媒介変数式を、両パラメータが閉単位区間に収まる条件で解きます。解があるときは intersects true、接触の種類(固有交差、端点接触、共線重なり)、共有点の座標、パラメータ t と u を返します。
線分の交差の意味と無限直線との違い
ユークリッド平面幾何において線分は、2つの端点のあいだの閉じた点集合であり、それを延長した無限直線ではありません。2本の線分は少なくとも1点を共有するときに交差します。相対内部で交わる(固有交差)、端点のみで接する(T字接合や共有頂点)、同じ支持直線上にあり部分線分または一点で重なる(共線接触)場合があります。
検索意図は「2つの線分は交わるか」「線分交差計算機」「線分の交差チェック」「座標から2線分の交点」といった句に集まります。この意図は無限直線ソルバーとは意図的に異なります。両線分を完全な直線に延長すると、多角形・衝突境界・地図リンクで重要な有限辺の外に交点を捏造しうるからです。
本計算機は線分を閉として扱い、端点同士の接触を沈黙の不一致ではなく交差として数えます。これは計算幾何の教科書と学校問題で一般的な閉線分の慣習と一致します。
端点の検証方法と交差の計算方法
任意の precision は数値応答の小数桁を 0 から 15 まで制御し、既定は 10 です。計算は標準の媒介変数形を使います。P を A に t 倍の (B 引く A) を加えたもの、かつ C に u 倍の (D 引く C) を加えたものとし、方向ベクトルの2次元外積を行列式とする2×2系を立てて t と u を解きます。
行列式が安全に非零で両パラメータが閉単位区間に入るとき、線分はその P で交わります。パラメータが 0 または 1 のときは端点接触と印します。行列式が消えると支持直線は平行です。
端点が共線でなければ交わりはなく、共線なら一方の端点が他方上にあるかを調べ、重なるときは解の区間ではなく代表の共有点とともに intersects true を報告します。第3の線分もなく、最小二乗フィットもなく、座標そのものの単位変換もなく、算術は共有のデカルト枠を仮定します。
学習・設計・コードにおける線分交差チェックの位置づけ
学習者は座標幾何・多角形の辺・直線上の開区間と閉区間の区別を学ぶときに線分交差に出会います。教科書が4端点を与えて線分が交わるかを問う場合や、無限直線への延長だけが交わる図を示す場合があり、本チェッカーは接触があるとき明確なブール値と座標を、ないとき kind none を返します。
建築家・測量者・ゲームレベル設計者は、レイアウトを接続済みとみなす前に、2本の壁・道路・経路辺が有限長の内側で本当に出会うかをしばしば必要とします。開発者は同じ契約をスクリプトから呼び、幾何ライブラリの決定的テストベクトル、教材での向きテストの図示、線分同士の厳密解を求めるプログラミング課題を満たします。
線分が既知で内点だけが必要なときは中点・内分公式ツールと、線分外でも支持直線の交点が欲しいときは無限直線交差計算機と、辺交差がより大きな平面図形に入るときは多角形面積ヘルパーと組み合わせてください。
活用例
宿題・試験向けの線分演習
学習者と採点者は、固有交差・端点接触・明確な不一致を含め、8つの端点座標から2線分が交わるかを、ローカルな計算機代数系なしで確認できます。
メッシュ・CAD・地図の辺チェック
多角形の辺・道路リンク・壁レイアウトを検証するツールは、グラフを接続済みとみなす前に、2本の有限線分が点を共有するかを問い合わせられます。
決定的な幾何フィクスチャ
単体テスト・競技バリデータ・CI アサーションを種付けするパイプラインは、各言語で媒介変数の外積を再実装する代わりに、純粋な線分交差オラクルを呼び出せます。
よくある質問
必須の入力は何ですか?
有限座標が8つです。 線分 AB の x1,y1,x2,y2 と線分 CD の x3,y3,x4,y4。任意の precision は小数桁を 0 から 15(既定 10)に設定します。
交差はどう計算されますか?
媒介変数形 P = A + t(B−A) = C + u(D−C) です。方向ベクトルの2D外積で t と u を解き、閉線分ヒットには両パラメータが [0,1] に入る必要があります。
直線は交わるのに線分は交わらないのはなぜですか?
直線は無限に伸びるので、平行でない2本の直線は必ずどこかで交わります。線分は端点で終わるため、直線どうしの交点が線分の外にあれば、接触なしと判定されます。
どのような接し方を判定できますか?
3通りです。両方の線分の内側を通る交差、共有する角のような端点での接触、そして同じ直線上にあって一部が重なる場合です。
結果のtとuは何を表しますか?
それぞれの線分の始点から共有点までが、全体のどの割合にあたるかを示します。0なら始点、1なら終点、0.5ならちょうど中間です。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geom/segment-intersection \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x1":0,"y1":0,"x2":4,"y2":4,"x3":0,"y3":4,"x4":4,"y4":0}'const res = await fetch("https://api.kit.forhosting.com/geom/segment-intersection", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 4,
"x3": 0,
"y3": 4,
"x4": 4,
"y4": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geom/segment-intersection",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 4,
"x3": 0,
"y3": 4,
"x4": 4,
"y4": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geom/segment-intersection", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x1":0,"y1":0,"x2":4,"y2":4,"x3":0,"y3":4,"x4":4,"y4":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x1":0,"y1":0,"x2":4,"y2":4,"x3":0,"y3":4,"x4":4,"y4":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geom/segment-intersection", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"x1": 0,
"y1": 0,
"x2": 4,
"y2": 4,
"x3": 0,
"y3": 4,
"x4": 4,
"y4": 0
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geom.segment_intersection",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
交わらないときは intersects false と kind none を返し、点フィールドは省略します。欠落または非数値の端点は invalid_input ですぐ失敗し、検証失敗は課金されません。
線分の交差の意味と無限直線との違い
学習者は解答キーに対する座標付きの数値的な可否を求め、開発者はメッシュや UI ヒット領域・競技バリデータの辺同士テスト用の決定的オラクルを求め、測量や CAD 補助は向きやクラメールを各言語で再実装せずに報告書へ貼れる構造化 JSON を求めます。intersects・kind・任意の点フィールドを JSON で返すと、継続的インテグレーションのアサーション、より大きなパイプライン、ノートへの転記が容易になります。
端点の検証方法と交差の計算方法
必須の8フィールド x1, y1, x2, y2, x3, y3, x4, y4 を含む JSON ボディを送ってください。各フィールドは有限数でなければならず、JSON 数値と十進文字列が受理され、ax, ay, bx, by, cx, cy, dx, dy などの短い別名は同じ座標に対応します。エンジンは欠落フィールド・空文字列・NaN・無限大を invalid_input で拒否し、失敗した呼び出しは課金されず偽の交点も作りません。
学習・設計・コードにおける線分交差チェックの位置づけ
教員は proper・endpoint・parallel の混合ケースについて intersects と点を列挙した解答キーを事前生成でき、不完全行には空白や沈黙の Infinity ではなく invalid_input に頼れます。このページでは処理はすべてブラウザ内で走り、API では成功した照会ごとに $0.002 で、失敗した検証は課金されず、応答後に何も保存しません。無料の対話的探索と同一の有料 API という分割は KIT のティア A カタログと一致し、教室デモから自動パイプラインへ数学結果を変えずに移れます。
技術的な質問
線分交差チェッカーの料金はいくらですか?
このページではブラウザ上で無料です。API では成功した要求が $0.002 で、無効入力は課金されません。
端点の接触は交差に数えますか?
はい。頂点のみを共有する閉線分や T 字接合は intersects true と kind endpoint を報告します。
座標が欠落している、または数でない場合は?
ハンドラは失敗フィールド名付きの invalid_input を返します。非数値や無限の端点は捏造の交点を決して作りません。