3次元距離計算
(1.5, 2.5, 3.5)から(4.5, 6.5, 8.5)までは各軸の差が3、4、5なので、直線距離は7.07106781187です。空間内の任意の2点を入力すると、この長さと各軸の差がすぐに分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- X1
- 1.5
- Y1
- 2.5
- Z1
- 3.5
- X2
- 4.5
- Y2
- 6.5
- Z2
- 8.5
- Dx
- 3
- Dy
- 4
- Dz
- 5
- 距離
- 7.0710678119
6つの数値を送信すると、距離、3軸それぞれの差分、距離の2乗が、座標を測定したのと同じ単位で返されます。これはピタゴラスの定理を空間へ自然に一般化したものであり、体積・シーン・物理モデルにおける「この2つはどれだけ離れているか」という問いへの答えを、決定的な1回の呼び出しとして提供します。座標が欠けている場合や有限の数値でない場合には、明示的なエラーが返されます。
ピタゴラスの定理から三次元へ
3D距離の公式は、ピタゴラスの定理を2回適用したものです。まずz次元を折りたたみます。線分のxy平面への射影の長さはsqrt(dx² + dy²)で、これはまさに2次元の場合です。
その射影と垂直方向の差dzが2番目の直角三角形の2辺をなし、その斜辺が真の空間線分となるため、d = sqrt(dx² + dy² + dz²)となります。3d distance calculatorはまさにこの計算だけを行います。すべての差分は2乗されるため、点の順序は関係ありません。
AからBへの距離は常にBからAへの距離と等しく、負の差も同じ正の辺の長さにまとめられます。結果は2乗和の平方根であるため常に非負であり、2点が一致するときだけゼロになります。
単位、2乗距離、数値的な堅牢性
メートルの座標からはメートルの距離が、ボクセルからはボクセルが、CADモデルの単位からはモデル単位が得られます。変換は行われず、その必要もありません。つまり、呼び出し前に6つの座標すべてを同じ単位で与えることはお客様の責任となります。
知っておく価値のある実装上の詳細が2つあります。1つ目は、2乗距離dx² + dy² + dz²が距離そのものと一緒に返されることです。近さで候補を並べ替えるだけでよい場合、つまり最も近いドローン、最も近いセンサー、最も遠い頂点を探す場合、2乗距離どうしを比較すれば平方根を完全に省略でき、大規模な点群に対する近傍探索ループの中では標準的な手法です。
2つ目は、平方根の計算に単純な2乗和ではなくMath.hypotを使っていることです。これにより、10¹⁵⁴に近づく座標差が途中でInfinityにオーバーフローせず、10⁻¹⁵⁴付近の微小な差がゼロにアンダーフローすることもありません。
バリデーション、エラー、統合方法
この契約は意図的に厳格です。6つの座標すべてが有限の数値でなければなりません。クライアントエラーは請求対象外だからです。'
4.5'のような数値文字列は受け入れられ変換されます。現実ではフォームデータやクエリ文字列はテキストとして届くためですが、その変換は厳密で、数値として完全に解析できないものは黙って切り捨てられるのではなく拒否されます。
活用例
3Dエンジンでの近接・衝突判定
ゲームやシミュレーションでオブジェクト・ウェイポイント・エージェント間の距離を測定し、距離がしきい値を超えたときにイベントを発火させます。
点群における最近傍探索
クエリ点からセンサー・アセット・LiDARサンプルまでの2乗距離を順位付けし、不要な平方根のコストを支払わずに最も近いものを選びます。
工学上のクリアランスと公差
CADやBIMモデル内の2つの取り付け点・ケーブル・部品が、要求される最小または最大の間隔を保っているかを検証します。
よくある質問
どの公式を使いますか?
空間におけるユークリッド距離 d = sqrt((x2 - x1)² + (y2 - y1)² + (z2 - z1)²) で、数値的な堅牢性のためにMath.hypotで計算されます。
結果の単位は何ですか?
座標と同じ単位です。 x、y、zがメートルなら距離もメートルです。単位変換は一切行われません。
2次元の点にも使えますか?
はい。 両方の点に同じz座標を与えれば公式は2次元の場合に帰着します。
2乗距離も返されるのはなぜですか?
近さで候補を並べ替えるだけでよい場合、2乗距離どうしを比較する方が計算コストが低いからです。順序付けには平方根は不要です。
2点を入力する順番で距離は変わりますか?
変わりません。各軸の差はすべて2乗してから足すため、AからBまでとBからAまでの距離は常に同じで、差がマイナスでもプラスの場合と同じに扱われます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/distance-3d \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x1":1.5,"y1":2.5,"z1":3.5,"x2":4.5,"y2":6.5,"z2":8.5}'const res = await fetch("https://api.kit.forhosting.com/math/distance-3d", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x1": 1.5,
"y1": 2.5,
"z1": 3.5,
"x2": 4.5,
"y2": 6.5,
"z2": 8.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/distance-3d",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x1": 1.5,
"y1": 2.5,
"z1": 3.5,
"x2": 4.5,
"y2": 6.5,
"z2": 8.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/distance-3d", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x1":1.5,"y1":2.5,"z1":3.5,"x2":4.5,"y2":6.5,"z2":8.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x1":1.5,"y1":2.5,"z1":3.5,"x2":4.5,"y2":6.5,"z2":8.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/distance-3d", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"x1": 1.5,
"y1": 2.5,
"z1": 3.5,
"x2": 4.5,
"y2": 6.5,
"z2": 8.5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.distance_3d",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
3D距離APIは、2点のx、y、z座標から三次元空間内のユークリッド距離、つまり(x1, y1, z1)と(x2, y2, z2)を結ぶ線分の直線長さを、d = sqrt((x2 - x1)² + (y2 - y1)² + (z2 - z1)²)で計算します。
ピタゴラスの定理から三次元へ
レスポンスには解析された座標と3つの差分が距離と並んで含まれるため、どの入力がどの出力を生んだかを手計算で再導出せずに正確に確認できます。このトレーサビリティは、距離が衝突しきい値・品質公差・安全クリアランスに使われ、後から境界例がなぜ合格または不合格になったのか問われる場面で重要です。
単位、2乗距離、数値的な堅牢性
このエンドポイントは意図的に単位に依存しません。出力は有効数字12桁に丸められるため、物理測定が正当化し得る精度を損なうことなく、マシンや実行間で安定して比較可能なレスポンスが得られます。
バリデーション、エラー、統合方法
フィールドの欠落、null、空文字列、真偽値、配列、'up'のような非数値ラベル、NaN、±Infinityはすべて同じ結果になります。問題のフィールド名を示す明確なinvalid_inputエラーが返され、課金はされません。統合は簡単です。 x1、y1、z1、x2、y2、z2を含むJSONオブジェクトをPOSTし、レスポンスの距離フィールドを読み、メッセージを解析する代わりに文書化されたエラーコードを処理するだけです。データが真に2次元である場合は、両方のz座標を同じ値に固定するか、4つの数値だけで済む専用の2Dエンドポイントをご利用ください。このページのブラウザ上では当社のエッジで動くのと同じコードが無料で実行されるため、APIをパイプラインに組み込む前に実際の数値で試作でき、自動化した場合にのみ公開されている1リクエストあたり$0.002をお支払いいただきます。
技術的な質問
料金はいくらですか?
1リクエストあたり$0.002です。このページのブラウザ上では無料で実行できます。
座標が欠けている場合や数値でない場合はどうなりますか?
該当フィールド名を示すinvalid_inputエラーが返され、リクエストは課金されません。NaNとInfinityも拒否されます。