共線判定
3つの点が一直線上にあるかを判定します。(0, 0)、(1, 1)、(2, 2)は、作る三角形の面積が0なので一直線上にあります。傾きを使わないため、垂直な直線でも正しく判定できます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- X1
- 0
- Y1
- 0
- X2
- 1
- Y2
- 1
- X3
- 2
- Y3
- 2
- 符号付き面積の2倍
- 0
平面上の3点が共線であるとは、1本の直線がそれらすべてを通ることを意味します。宿題を確認する生徒、頂点を検証するGISスクリプト、退化三角形を検出するCADパイプライン、試験問題ジェネレータは、曖昧なスケッチではなく高速で決定的な答えを必要とします。この共線判定は点A・B・Cの6つの座標を受け取り、ベクトルABとACの外積(三角形の符号付き面積の2倍に相当)を評価し、その値がゼロかどうかを報告します。
共線の意味と外積による判定の仕組み
相異なる2点は常に一意の直線を定めます。第3点CがA・Bと共線であるとは、その同じ直線上にあることを意味します。代数的には、AからBおよびAからCへのベクトルが平行であるため、2次元の外積はゼロになります。(
x2−x1)(y3−y1)−(x3−x1)(y2−y1)がゼロです。この量はshoelace公式による三角形ABCの符号付き面積の2倍でもあり、面積ゼロは3頂点が三角形を張らず一直線上にあることを意味します。いずれか2点が一致する、あるいは3点すべてが同じ座標を共有する場合でも外積はゼロのままで、能力はcollinearをtrueと報告します。
これは退化した三つ組でも直線上にある(実際には無限本の直線上にある)という幾何学的見方と一致します。点が本物の三角形を成すとき、外積の絶対値は正となりcollinearはfalseです。あいまいなイプシロン方針を勝手に導入して採点者を驚かせることはありません。
これは純粋な座標幾何です。垂直線で破綻する傾き計算も、AがBに等しいときに失敗する除算も、計算機代数システムへの依存もありません。
共線チェッカーが役立つ場面
教室・家庭教師プラットフォームでは、垂直線分で破綻する傾き計算なしに宿題の三点を検証できます。試験・LMSの自動採点は、共線・非共線を一貫して判定し、不正な座標を黙って強制せず拒否する決定的オラクルを必要とします。GIS・地図パイプラインは中間頂点が線分上に潰れた退化ポリラインを検出し、6数の判定に巨大な幾何ライブラリを引き込まずに済みます。
CAD・メッシュツールは三角分割前に面積ゼロの面を検出します。「検証失敗は課金されません。
活用例
教室と宿題の確認
生徒に3組の座標を提出させ、垂直線で破綻する傾き公式なしに点が共線かどうかを確認できます。
試験とLMSの自動採点
非数値座標を拒否し、浮動小数の答えを捏造しない決定的オラクルで共線問題を採点します。
GIS・CADの退化チェック
面積・三角分割・エクスポートが失敗する前に、ポリラインやメッシュ面の共線・一致頂点を検出します。
よくある質問
2点が同じ場合はどうなりますか?
一致する点では外積がゼロになるためcollinearはtrueです。幾何学的にも共通の直線上にあります。
数値でない座標ではどうなりますか?
欠落・空・NaN・Infinity・非数値文字列は拒否され、課金されません。
なぜ傾きで共線を判定しないのですか?
線分が垂直(傾き無限)だと傾き比較は失敗するか特殊ケースが必要です。外積テストは除算なしであらゆる向きに機能します。
3点が一直線上にあるかはどう判定しますか?
1つ目の点から残り2点への差をたすき掛けにして引き算します。これは三角形の面積の2倍に当たり、0なら三角形ができないので、3点は同じ直線上にあります。
直線の傾きや方程式も表示されますか?
いいえ。一直線上にあるかどうかの答えと、判定に使った面積の2倍の値だけを表示します。傾きや方程式、図が必要なときは、別のツールやご自分のグラフと組み合わせてください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geom/collinear-points \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x1":0,"y1":0,"x2":1,"y2":1,"x3":2,"y3":2}'const res = await fetch("https://api.kit.forhosting.com/geom/collinear-points", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x1": 0,
"y1": 0,
"x2": 1,
"y2": 1,
"x3": 2,
"y3": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geom/collinear-points",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x1": 0,
"y1": 0,
"x2": 1,
"y2": 1,
"x3": 2,
"y3": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geom/collinear-points", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x1":0,"y1":0,"x2":1,"y2":1,"x3":2,"y3":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x1":0,"y1":0,"x2":1,"y2":1,"x3":2,"y3":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geom/collinear-points", 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": 1,
"y2": 1,
"x3": 2,
"y3": 2
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geom.collinear_points",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
数値でない座標や欠落した座標はinvalid_inputで失敗し、課金されません。
共線の意味と外積による判定の仕組み
エンドポイントはtwice_signed_areaフィールドを小数第12位まで丸め、ランタイム間で安定した機械比較ができるようにしています。
入力契約、応答の形、エラー時の振る舞い
第1点のx1とy1、第2点のx2とy2、第3点のx3とy3です。スケッチが必要な場合はご自身の描画と組み合わせてください。この能力は共線判定のみを行い、SVG・傾き・直線方程式は出力しません。本ページは「3点が共線か」という検索意図に応えます。6つの有限数を必須とするJSON本体をPOSTしてください。各フィールドはJSON数値または数値文字列で送れます。欠落、空文字、NaN、Infinity、非数値テキストはフィールド名付きのinvalid_inputで失敗し、これらの失敗は残高を消費しません。成功時は安定化のため丸めた6座標、真偽値collinear、判定に用いた数値twice_signed_area、アルゴリズム名method(cross_product)を返します。例:点(0,0)、(1,1)、(2,2)は直線y=x上にあるためcollinearはtrue、twice_signed_areaはゼロです。点(0,0)、(1,0)、(0,1)は面積1/2の直角三角形を成すためcollinearはfalse、twice_signed_areaは1です。2点からの直線方程式や3頂点からの三角形面積は関連する幾何エンドポイントをご利用ください。
共線チェッカーが役立つ場面
実装は純粋parseのティアAのため、成功した呼び出しはモデルトークンや外向きネットワークなしで公開の基本料金$0.002です。リクエストを小さく保ち、丸めたtwice_signed_areaをテストに固定すれば、宿題・エッジワーカー・CI向けに再現可能な共線判定が得られ、独自の数式処理基盤は不要です。
技術的な質問
3点が共線かどうかはどう確認しますか?
有限数x1,y1,x2,y2,x3,y3を送ってください。外積(x2−x1)(y3−y1)−(x3−x1)(y2−y1)がゼロのときAPIはcollinear trueを返し、そうでなければfalseです。
共線チェッカーの料金はいくらですか?
ブラウザツールは無料です。APIリクエストは成功呼び出しごとに前払いKIT残高から$0.002です。無効入力は課金されません。