共面性チェッカー
空間の4点が同じ平面上にあるかを判定します。(0, 0, 0)、(1, 0, 0)、(0, 1, 0)、(1, 1, 0)は同じ平面上にあり、最後の点を(1, 1, 1)に上げると体積1/6の四面体になります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- X1
- 0
- Y1
- 0
- Z1
- 0
- X2
- 1
- Y2
- 0
- Z2
- 0
- スカラー三重積
- 0
- 四面体の体積
- 0
三次元空間の四点は、一つの平面がすべてを含むとき共面です。CAD検証、ゲームエンジンの面構築、測量パイプライン、線形代数の授業では、本格的な数式処理システムを導入せずに、その性質について信頼できる可否判定が常に求められます。本共面性チェッカーは点A・B・C・Dの十二個の直交座標を受け取り、Aから三本の辺ベクトルを作り、スカラー三重積AB · (AC × AD)を評価し、その積が数値的に零かどうかを報告します。積が消えるとそれらが張る四面体の体積は零で四点は同一平面を共有し、消えないときは正の体積をもつ立体四面体をなします。
共面性の意味とスカラー三重積による判定
相異なる二点は常に直線を定め、非共線の三点はユークリッド三次元空間で常に一意の平面を定めます。第四点はその平面上にあるか、そうでないかのいずれかです。代数的には、第一点から他の三点へ向かうベクトルAB・AC・ADを取ります。
外積AC × ADはA・C・Dの平面の法線です(三点が共線なら零)。ABとその法線の内積がスカラー三重積AB · (AC × AD)です。幾何的には頂点A・B・C・Dの四面体の符号付き体積の六倍に等しいです。
三重積の絶対値が零なら体積は零で四点は共面であり、非零なら正の体積の四面体をなし、一つの平面には乗れません。共線の三点や重複点でも三重積は零のままで、ある平面(実際には無限に多く)がそれらを含むという弱い意味で正しく共面と分類されます。比較では単位が相殺されます。
メートルでもミリメートルでも抽象数でも、すべての座標が同じ尺度である限り機能します。応答は四点、丸められた三重積、四面体の絶対体積、共面の真偽値、および教材UIで答えの横に示せる短い公式文字列を返します。
4点が同じ平面かの確認が役立つ場面
メッシュとCADのパイプラインは、四頂点を一つの多角形面に統合する前に共面性チェッカーを使い、法線を歪めたり平面面の制約を破ったりする非平面クワッドを検出します。測量と写真測量のスクリプトは、床や壁の平面を共有する想定の制御点が実際にそうなっているかを面積や標高の計算前に確認します。
線形代数と立体幾何の授業では、受験の圧の下で学生が九回の乗算を手計算しなくても、共面と四面体配置を区別する決定的オラクルが必要です。ゲームエンジンやレベルエディタはパネルやポータルの四隅ハンドルをよく保持し、設計者が一頂点を動かして平面性を壊す持ち上げを拒否しなければなりません。検証失敗は残高を消費しません。
活用例
CADとメッシュの平面性ゲート
候補の多角形面ごとに四隅の頂点を検査し、面の結合やエクスポート前に非平面クワッドを拒否します。
教室と試験の自動採点
与えられた四点が共面かどうかを問う立体幾何の設問を、決定的なスカラー三重積オラクルで採点します。
測量・制御点の確認
床や壁の一平面を想定した四本の杭や写真測量マーカーが、実際にその平面を共有しているかを確認します。
よくある質問
四点の3D座標が共面かどうかはどう確かめますか?
有限座標x1,y1,z1からx4,y4,z4を送ってください。
共面性チェッカーはどの公式を使いますか?
第一点からの辺ベクトルのスカラー三重積AB · (AC × AD)を使います。積が零のとき共面であり、四面体体積はその絶対値を六で割った値です。
座標が数値でない場合はどうなりますか?
非数値文字列、Infinity、NaN、空値、欠落座標は拒否され、課金されません。
共線や重複点も共面とみなされますか?
はい。 三点または四点がつぶれて三重積が零なら、なお何らかの平面(多くの場合無限)上にあるため、四面体体積零でcoplanarはtrueです。
四面体の体積から何が分かりますか?
4点は必ず四面体を作り、その体積はスカラー三重積を6で割った値です。体積が0なら形は平らで4点は同じ平面上にあり、正の体積なら同じ平面上にはありません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geom/coplanar-points \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x1":0,"y1":0,"z1":0,"x2":1,"y2":0,"z2":0,"x3":0,"y3":1,"z3":0,"x4":1,"y4":1,"z4":0}'const res = await fetch("https://api.kit.forhosting.com/geom/coplanar-points", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x1": 0,
"y1": 0,
"z1": 0,
"x2": 1,
"y2": 0,
"z2": 0,
"x3": 0,
"y3": 1,
"z3": 0,
"x4": 1,
"y4": 1,
"z4": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geom/coplanar-points",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x1": 0,
"y1": 0,
"z1": 0,
"x2": 1,
"y2": 0,
"z2": 0,
"x3": 0,
"y3": 1,
"z3": 0,
"x4": 1,
"y4": 1,
"z4": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geom/coplanar-points", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x1":0,"y1":0,"z1":0,"x2":1,"y2":0,"z2":0,"x3":0,"y3":1,"z3":0,"x4":1,"y4":1,"z4":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x1":0,"y1":0,"z1":0,"x2":1,"y2":0,"z2":0,"x3":0,"y3":1,"z3":0,"x4":1,"y4":1,"z4":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geom/coplanar-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,
"z1": 0,
"x2": 1,
"y2": 0,
"z2": 0,
"x3": 0,
"y3": 1,
"z3": 0,
"x4": 1,
"y4": 1,
"z4": 0
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geom.coplanar_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で失敗するため、自動化が不正な入力を幾何と取り違えることはありません。
共面性の意味とスカラー三重積による判定
本エンドポイントは十のマイナス九倍の小さな絶対イプシロンを用い、通常の座標スケールでの浮動小数点ノイズでブール値が反転しないようにしつつ、平面から明らかに浮いた点はなお共面でないと報告します。
入力契約・応答形・エラー動作
点Aはx1,y1,z1、Bはx2,y2,z2、Cはx3,y3,z3、Dはx4,y4,z4です。例:原点のA、(1,0,0)のB、(0,1,0)のC、(1,1,0)のDは、四つともzが零のため三重積零・体積零で共面です。Dを(1,1,1)に上げると積は一、体積は六分の一、coplanarはfalseになります。本能力は共面性の問いにのみ答え、平面当てはめやプロットデータは出力しません。必須の有限数十二個を含むJSON本体をPOSTしてください。各欄はJSON数値でも"1.5"や"-2e-3"のような数値文字列でも構いません。Infinity、NaN、空文字、欠落欄、非数値テキストは該当欄を名指ししてinvalid_inputで失敗し、課金されません。ax,ay,azからdx,dy,dz、p1xからp4zなどのよくある別名はフォーム層で宣言され、CAD風・表計算風のペイロードがきれいに対応します。ax+by+cz+d=0の係数が必要ならご自身の平面方程式や法線表示と組み合わせてください。
四点共面性APIが役立つ場面
実装は純粋パースのティアAなので、成功した呼び出しはモデルトークンも外向き通信もなく公開の基本料金$0.002です。リクエストを小さく保ち、丸めた三重積と体積をテストに固定すれば、採点・CIの幾何ゲート・エッジワーカー向けに再現可能な共面判定を、独自の計算幾何スタックなしで得られます。
技術的な質問
共面性チェッカーの料金はいくらですか?
ブラウザツールは無料です。API要求は成功した呼び出しごとに前払いKIT残高から$0.002です。無効入力は課金されません。