輸入點 1 和點 2 的 xyz 坐標,就會計算空間中兩點間的距離,同時顯示 x、y、z 各自的變化量。
這個頁面可以做什麼
- 只要輸入空間(三維)中兩點的 xyz 坐標,就能當場求出兩點間的距離 \(d\)
- 除了距離,也會一併算出 x 的變化量 \(\Delta x\)、y 的變化量 \(\Delta y\)、z 的變化量 \(\Delta z\)
- 計算結果也會畫成可以用滑鼠旋轉的 3D 圖形,親眼確認「求出的距離就是連接兩點的線段(長方體的對角線)長度」
- 淺顯易懂的公式解說,以及可直接複製到 Excel、Google 試算表、Python 的公式,也都整理在這個頁面
這個計算有什麼用?
3D 遊戲會用 (x, y, z) 坐標管理角色、子彈和道具的位置,判斷「距離小於一定值就算擊中」「靠近到一定距離敵人就會發現」。例如自己在 (1, 1, 1)、敵人在 (2, 3, 3),距離就是 \(\sqrt{1^2 + 2^2 + 2^2} = 3\)。每一格畫面都重複這個計算,就是 3D 遊戲距離判定的原理。
它只是在 2D 遊戲用的距離公式多加一項 \(z\) 而已。
無人機的位置可以用「水平方向相距多遠(x、y)」和「高度(z)」三個數表示。位在操作者水平往東 60 m、往北 80 m、高度 50 m 的機體,直線距離是 \(\sqrt{60^2 + 80^2 + 50^2} = \sqrt{12500} \approx 111.8\) m。
估算遙控訊號的範圍、目視可見的距離時,用的就是這個空間距離。
3D CAD 會用空間坐標指定零件孔中心和頂點的位置。圖面上沒有直接標出的「空間中斜向相隔的兩點距離」,可以由坐標的差用本頁的公式求出。例如水平相距 30 mm、深度相距 40 mm、往上相距 120 mm 的兩點,距離是 \(\sqrt{30^2 + 40^2 + 120^2} = 130\) mm。
估算補強構件的長度、配管與配線的最短路徑等,是製造現場天天都會用到的計算。
化學上會用空間坐標記錄分子中每一個原子的位置(蛋白質的資料庫也是這種格式)。只要知道兩個原子的坐標,兩者之間的距離(鍵長或原子之間的遠近)就能直接用本頁的公式算出。
像是檢討候選藥物分子能不能順利嵌進目標分子,這是支撐新藥開發與材料研發的基本計算。
公式與圖示
符號與用語解說
符號
| \(d\) | d | 空間中兩點間的距離,取自 distance(距離)的字首。 |
| \((x_1, y_1, z_1)\), \((x_2, y_2, z_2)\) | x 1、y 1、z 1 | 空間中兩個點的坐標。\(x\)、\(y\) 表示在平面上的位置,\(z\) 表示高度,右下角的小數字(下標)用來區分「第 1 個點、第 2 個點」。 |
| \(\Delta x\), \(\Delta y\), \(\Delta z\) | delta x、delta y、delta z | 變化量(坐標的差)。\(\Delta\)(delta)是表示「變化、差」的希臘字母,\(\Delta x = x_2 - x_1\),\(\Delta y = y_2 - y_1\),\(\Delta z = z_2 - z_1\)。 |
| \(\ell\) | l | 本頁解說中,長方體「底面對角線」長度的符號。\(\ell^2 = \Delta x^2 + \Delta y^2\),是用兩次畢氏定理推導時中間的橋梁。 |
| \(\sqrt{\phantom{a}}\) | 根號 | 表示平方根(平方後會等於該數的數)的符號。\(\sqrt{9} = 3\)(因為 3² = 9)。空間距離公式也只在最後開一次根號。 |
用語
| 空間坐標系 | 在 x 軸、y 軸之外再加上表示高度的 z 軸,用 (x, y, z) 三個數的組合表示點的位置的空間。就是在平面(二維)坐標上多了一個「高度」。台灣在高中二年級學習。 |
| 坐標 | 用一組數表示點的位置。在空間中會像點 (2, 3, 3) 這樣是三個數的組合,表示「x 方向 2、y 方向 3、z 方向(高度)3」的位置。 |
| 線段 | 以兩個點為端點、直直連起來的線。兩點間的距離,就是這條線段的長度。 |
| 畢氏定理 | 直角三角形中「兩股的平方和 = 斜邊的平方」的定理(又稱勾股定理)。空間距離公式就是連續用兩次這個定理。台灣在國中八年級學習。 |
| 長方體的對角線 | 穿過長方體內部、連接相對頂點的線段。長 a、寬 b、高 c 的長方體,對角線長是 \(\sqrt{a^2 + b^2 + c^2}\),空間中兩點間的距離就是相同的計算。 |
| 歐幾里得距離 | 本頁計算的「兩點直線相連的距離」的正式名稱。不只三維,在資料分析和 AI 領域,也常用這個名稱指衡量點與點遠近的基本距離。 |
| 維度 | 表示位置所需要的數的個數。直線上是一維(數線),平面是二維(x, y),空間是三維(x, y, z)。維度每增加一個,距離公式只是在根號裡多一項,形式不變。 |
建議先了解的基礎知識
為了讓您「理解意義」地使用本頁的計算,這裡整理了事先了解會更好懂的基礎知識。
遇到卡關時,回頭複習這些內容是最快的捷徑。
| 坐標平面(國中七年級,12~13 歲) |
|
| 正負數的計算(國中七年級,12~13 歲) |
|
| 平方根(國中八年級,13~14 歲) |
|
| 畢氏定理(國中八年級,13~14 歲) |
|
| 立體圖形與空間坐標(國中、高中二年級) |
|
用 Excel 計算的方法
| 點 1 的 x 坐標 x₁ | 1 |
| 點 1 的 y 坐標 y₁ | 1 |
| 點 1 的 z 坐標 z₁ | 1 |
| 點 2 的 x 坐標 x₂ | 2 |
| 點 2 的 y 坐標 y₂ | 3 |
| 點 2 的 z 坐標 z₂ | 3 |
| 兩點間的距離 d | =SQRT((B4-B1)^2+(B5-B2)^2+(B6-B3)^2) |
| 點 1 的 x 坐標 x₁ | 0 |
| 點 1 的 y 坐標 y₁ | 0 |
| 點 1 的 z 坐標 z₁ | 0 |
| 點 2 的 x 坐標 x₂ | 3 |
| 點 2 的 y 坐標 y₂ | 4 |
| 點 2 的 z 坐標 z₂ | 12 |
| x 的變化量 Δx | =B4-B1 |
| y 的變化量 Δy | =B5-B2 |
| z 的變化量 Δz | =B6-B3 |
| 底面對角線 ℓ=√(Δx²+Δy²) | =SQRT(B7^2+B8^2) |
| 兩點間的距離 d=√(ℓ²+Δz²) | =SQRT(B10^2+B9^2) |
「SQRT(…)」是平方根,「^2」是平方。
第一個表格會算出距離 3。第二個表格由 Δx = 3、Δy = 4、Δz = 12 出發,先求出底面對角線 ℓ = 5,再求出距離 d = 13,也能看到用兩次畢氏定理時中間的值。
用 Google 試算表計算的方法
| 點 1 的 x 坐標 x₁ | 1 |
| 點 1 的 y 坐標 y₁ | 1 |
| 點 1 的 z 坐標 z₁ | 1 |
| 點 2 的 x 坐標 x₂ | 2 |
| 點 2 的 y 坐標 y₂ | 3 |
| 點 2 的 z 坐標 z₂ | 3 |
| 兩點間的距離 d | =SQRT((B4-B1)^2+(B5-B2)^2+(B6-B3)^2) |
| 點 1 的 x 坐標 x₁ | 0 |
| 點 1 的 y 坐標 y₁ | 0 |
| 點 1 的 z 坐標 z₁ | 0 |
| 點 2 的 x 坐標 x₂ | 3 |
| 點 2 的 y 坐標 y₂ | 4 |
| 點 2 的 z 坐標 z₂ | 12 |
| x 的變化量 Δx | =B4-B1 |
| y 的變化量 Δy | =B5-B2 |
| z 的變化量 Δz | =B6-B3 |
| 底面對角線 ℓ=√(Δx²+Δy²) | =SQRT(B7^2+B8^2) |
| 兩點間的距離 d=√(ℓ²+Δz²) | =SQRT(B10^2+B9^2) |
用 Python 計算的方法
import math
x1, y1, z1 = 1.0, 1.0, 1.0 # 點 1 的坐標
x2, y2, z2 = 2.0, 3.0, 3.0 # 點 2 的坐標
delta_x = x2 - x1 # x 的變化量
delta_y = y2 - y1 # y 的變化量
delta_z = z2 - z1 # z 的變化量
distance = math.sqrt(delta_x**2 + delta_y**2 + delta_z**2) # 兩點間的距離
print(f"x 的變化量 Δx:{delta_x}")
print(f"y 的變化量 Δy:{delta_y}")
print(f"z 的變化量 Δz:{delta_z}")
print(f"兩點間的距離 d:{distance}")
# 同樣的計算也能用 math.dist 一行寫完(Python 3.8 以上)
print(f"用 math.dist 驗算:{math.dist((x1, y1, z1), (x2, y2, z2))}")
用 LaTeX 等數學式語言的寫法(可直接複製)
d = √((x₂ − x₁)² + (y₂ − y₁)² + (z₂ − z₁)²)
d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2 + (z_2 - z_1)^2}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>d</mi>
<mo>=</mo>
<msqrt>
<mrow>
<msup>
<mrow><mo>(</mo><msub><mi>x</mi><mn>2</mn></msub><mo>−</mo><msub><mi>x</mi><mn>1</mn></msub><mo>)</mo></mrow>
<mn>2</mn>
</msup>
<mo>+</mo>
<msup>
<mrow><mo>(</mo><msub><mi>y</mi><mn>2</mn></msub><mo>−</mo><msub><mi>y</mi><mn>1</mn></msub><mo>)</mo></mrow>
<mn>2</mn>
</msup>
<mo>+</mo>
<msup>
<mrow><mo>(</mo><msub><mi>z</mi><mn>2</mn></msub><mo>−</mo><msub><mi>z</mi><mn>1</mn></msub><mo>)</mo></mrow>
<mn>2</mn>
</msup>
</mrow>
</msqrt>
</mrow>
</math>
d = sqrt((x_2 - x_1)^2 + (y_2 - y_1)^2 + (z_2 - z_1)^2)
Sqrt[(x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2]
d := sqrt((x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2);
d = sqrt((x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2);
d = √((x_2 - x_1)^2 + (y_2 - y_1)^2 + (z_2 - z_1)^2)
Δx² + Δy² + Δz² = d²
\Delta x^2 + \Delta y^2 + \Delta z^2 = d^2
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mrow><mi mathvariant="normal">Δ</mi><mi>x</mi></mrow><mn>2</mn></msup>
<mo>+</mo>
<msup><mrow><mi mathvariant="normal">Δ</mi><mi>y</mi></mrow><mn>2</mn></msup>
<mo>+</mo>
<msup><mrow><mi mathvariant="normal">Δ</mi><mi>z</mi></mrow><mn>2</mn></msup>
<mo>=</mo>
<msup><mi>d</mi><mn>2</mn></msup>
</mrow>
</math>
(Delta x)^2 + (Delta y)^2 + (Delta z)^2 = d^2
dx^2 + dy^2 + dz^2 == d^2
dx^2 + dy^2 + dz^2 = d^2;
dx^2 + dy^2 + dz^2 == d^2
Δx^2 + Δy^2 + Δz^2 = d^2
請 ChatGPT 幫忙計算的方法
你是數學的計算助理。請務必實際執行 Python 程式碼來進行以下計算,並且只根據執行結果的數值回答(不要用心算或推測回答)。 針對空間(空間坐標系)中的兩點 (1, 1, 1) 和 (2, 3, 3),請分別求出: 1. 兩點間的距離 d(使用空間距離公式 d = √((x2−x1)² + (y2−y1)² + (z2−z1)²)) 2. x 的變化量 Δx、y 的變化量 Δy、z 的變化量 Δz 請列出使用的公式和執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權