輸入點 1 和點 2 的坐標,就會計算兩點間的距離,同時顯示通過兩點的直線的斜率和直線方程式。
請用半形數字輸入坐標(可以用小數、負數)。4 個欄位都必須填寫。
計算結果與圖表
在左邊的輸入欄填入兩點的坐標,按下「計算」,結果就會顯示在這裡。
這個頁面可以做什麼
- 只要輸入兩點的坐標,就能當場求出兩點間的距離 \(d\)
- 除了距離,也會一併算出 x 的變化量 \(\Delta x\)、y 的變化量 \(\Delta y\)、直線的斜率 \(m\),以及通過兩點的直線方程式 \(y = mx + b\)
- 計算結果也會畫成圖形,可以從圖上確認「求出的距離就是連接兩點的線段長度」
- 淺顯易懂的公式解說,以及可直接複製到 Excel、Google 試算表、Python 的公式,也都整理在這個頁面
本頁計算的是平面(二維)上兩點之間的直線距離。x 坐標相同的兩點(鉛直線上的兩點)也能計算距離,但這時斜率不存在,會顯示「不存在」,直線方程式也會以 x = 常數 的形式顯示,而不是 y = mx + b。
這個計算有什麼用?
遊戲的碰撞判定、與敵人的距離(程式設計)
2D 遊戲會用坐標管理自己的角色、敵人和道具的位置,「距離小於一定值就算碰到」。例如自己在 (1, 1)、敵人在 (4, 5),距離就是 \(\sqrt{3^2 + 4^2} = 5\)。不斷重複這個計算,就是用距離做碰撞判定的原理。
學遊戲開發時最早寫出的實用公式之一,就是這個距離公式。
測量、地圖上求兩地的距離(測量、土木)
測量時會用坐標的數值記錄土地的界址點和工程的控制點,台灣常用的是 TWD97 二度分帶(TM2)坐標。只要知道兩點的坐標,兩點間的水平距離就能用本頁的距離公式算出來。
這是支撐道路、建築物定位等公共建設的計算(另外,若要由經緯度考慮地球的曲率求距離,則要用另一種公式)。
衡量資料分析、AI 中的「相似程度」(歐幾里得距離)
資料分析時,會把像「身高與體重」這樣的兩個數值組合視為坐標平面上的點,點與點的距離越近,就認為是「越相似的資料」。用這個距離(歐幾里得距離)可以把相似的顧客分群(分群分析),或由附近的資料做預測(k 近鄰法)。
AI 與機器學習的教科書一定會出現的距離基本量法,就是本頁的公式。
從圖面、CAD 讀出斜向的長度(設計、製造)
設計圖和 CAD 會用坐標指定零件孔中心等位置。圖面上沒有直接標出的「兩孔中心之間的斜向距離」,可以由坐標的差用距離公式求出。
例如水平相距 30 mm、垂直相距 40 mm 的兩個孔,中心距離是 \(\sqrt{30^2 + 40^2} = 50\) mm。這是加工和檢驗現場天天都會用到的計算。
公式與圖示
兩點間的距離 \(d\)(距離公式)
圖示
數學寫法
(一般的數學式)
\(d\)
\(=\)
\(\sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}\)
文字寫法
(把符號換成文字的公式)
②
兩點間的距離 \(d\)
\(=\)
①
差的平方和的平方根
用文字讀公式
①
差的平方和 \((x_2 - x_1)^2 + (y_2 - y_1)^2\) 的平方根
(把 x 坐標的差和 y 坐標的差分別平方後相加,再開根號),就得到
②
兩點間的距離 \(d\)
簡單範例
點 (1, 1) 和點 (4, 5) 之間的距離是
距離 \(d\)
\(=\)
差的平方和((4−1)² + (5−1)² = 25)的平方根
\(d = \sqrt{(4-1)^2 + (5-1)^2} = \sqrt{9 + 16} = \sqrt{25} = 5\)
思考重點
常見的錯誤是像 \(\sqrt{(x_2-x_1)^2} + \sqrt{(y_2-y_1)^2}\) 這樣分別開根號。要先把根號裡的加法全部算完,最後只開一次平方根。
坐標的差即使是負數,平方後也會變成正數,所以兩點不論用哪個順序輸入,距離都一樣。答案常常是像 \(\sqrt{13}\) 這樣開不盡的數,這時本計算機會用小數(近似值)顯示。
為什麼這個公式能求出距離(畢氏定理)
圖示
數學寫法
(一般的數學式)
\(\Delta x^2\)
\(+\)
\(\Delta y^2\)
\(=\)
\(d^2\)
文字寫法
(把符號換成文字的公式)
①
x 的變化量 \(\Delta x = x_2 - x_1\) 的平方
\(+\)
②
y 的變化量 \(\Delta y = y_2 - y_1\) 的平方
\(=\)
③
距離 \(d\)(斜邊)的平方
用文字讀公式
①
x 的變化量 \(\Delta x\)(水平方向相距多遠)的平方
加上
②
y 的變化量 \(\Delta y\)(垂直方向相距多遠)的平方
,會剛好等於
③
兩點間距離 \(d\)(斜邊)的平方
(畢氏定理)
簡單範例
用點 (1, 1) 和點 (4, 5) 驗證(Δx = 3、Δy = 4)
Δx 的平方(3² = 9)
\(+\)
Δy 的平方(4² = 16)
\(=\)
距離的平方(25 = 5²)
\(3^2 + 4^2 = 9 + 16 = 25 = 5^2\)
思考重點
以連接兩點的線段為斜邊、水平的變化量 \(\Delta x\) 和垂直的變化量 \(\Delta y\) 為兩股,畫出一個直角三角形,就能直接使用國中八年級學到的畢氏定理。距離公式只是把這個式子改寫成 \(d =\) 的形式而已。
只要了解「距離公式」和「畢氏定理」不是兩個不同的公式,而是同一個定理,要背的東西就少了一個。
通過兩點的直線的斜率 \(m\) 與直線方程式 \(y = mx + b\)
圖形
數學寫法
(一般的數學式)
\(m\)
\(=\)
\(y_2 - y_1\)
\(\div\)
\(x_2 - x_1\)
\(y\)
\(=\)
\(m\)
\(\times\)
\(x\)
\(+\)
\(b\)
文字寫法
(把符號換成文字的公式)
③
直線的斜率 \(m\)
\(=\)
①
y 的變化量 \(\Delta y = y_2 - y_1\)
\(\div\)
②
x 的變化量 \(\Delta x = x_2 - x_1\)
⑦
直線上點的 y 坐標 \(y\)
\(=\)
④
斜率 \(m\)
\(\times\)
⑤
x 坐標 \(x\)
\(+\)
⑥
y 截距 \(b\)
用文字讀公式
①
y 的變化量 \(\Delta y\)
除以
②
x 的變化量 \(\Delta x\)
,就得到
③
直線的斜率 \(m\)
。接著,
④
斜率 \(m\)
乘以
⑤
x 坐標 \(x\)
,再加上
⑥
y 截距 \(b\)
(用 \(b = y_1 - m x_1\) 求出),就得到
⑦
直線上點的 y 坐標 \(y\)
,這樣就能寫出通過兩點的直線方程式
簡單範例
通過點 (1, 5) 和點 (3, 2) 的直線
斜率 \(m\)
\(=\)
y 的變化量(2 − 5 = −3)
\(\div\)
x 的變化量(3 − 1 = 2)
\(m = \frac{2 - 5}{3 - 1} = \frac{-3}{2} = -1.5\)
\(b = y_1 - m x_1 = 5 - (-1.5) \times 1 = 6.5\)
\(y = -1.5x + 6.5\)
思考重點
本計算機除了距離,也會附帶顯示「通過兩點的直線」的資訊。斜率 \(m\) 表示「水平往右走 1,垂直方向改變多少」,y 截距 \(b\) 是直線與 y 軸相交處的高度。
不過,兩點的 x 坐標相同時(\(x_1 = x_2\),兩點上下排列),會變成除以 \(\Delta x = 0\),所以斜率不存在。這時直線無法寫成 \(y = mx + b\),而是 \(x = c\)(\(c\) 為常數)的形式(鉛直線)。距離仍然可以用 \(|\Delta y|\) 求出。
斜率與斜角更詳細的解說和計算,請看相關頁面的斜率計算機。
兩點間的距離就是「把 x 坐標的差和 y 坐標的差分別平方後相加,再開平方根」,其實就是畢氏定理本身。只要想像成「由水平和垂直的差求斜邊的長度」,就不會忘記。
符號與用語解說
符號
| \(d\) | d | 兩點間的距離,取自 distance(距離)的字首。 |
| \((x_1, y_1)\), \((x_2, y_2)\) | x 1、y 1 | 兩個點的坐標。\(x\) 是水平方向、\(y\) 是垂直方向的位置,右下角的小數字(下標)用來區分「第 1 個點、第 2 個點」。 |
| \(\Delta x\), \(\Delta y\) | delta x、delta y | 變化量(坐標的差)。\(\Delta\)(delta)是表示「變化、差」的希臘字母,\(\Delta x = x_2 - x_1\),\(\Delta y = y_2 - y_1\)。 |
| \(\sqrt{\phantom{a}}\) | 根號 | 表示平方根(平方後會等於該數的數)的符號。\(\sqrt{25} = 5\)(因為 5² = 25)。距離公式只在最後開一次根號。 |
| \(m\) | m | 通過兩點的直線的斜率,表示「水平往右走 1,垂直方向改變多少」。正的話直線往右上升,負的話往右下降。 |
| \(b\) | b | y 截距:直線與 y 軸相交處的高度(\(x = 0\) 時 \(y\) 的值)。 |
用語
| 坐標 | 用(水平位置,垂直位置)這組數表示點的位置。點 (4, 5) 就是「從原點往右 4、往上 5」的位置。台灣在國中七年級學習。 |
| 坐標平面 | 用水平的 x 軸和垂直的 y 軸表示位置的平面。本頁的距離,就是坐標平面上兩點直線相連的長度。 |
| 線段 | 以兩個點為端點、直直連起來的線。兩點間的距離,就是這條線段的長度。 |
| 畢氏定理 | 直角三角形中「兩股的平方和 = 斜邊的平方」(\(a^2 + b^2 = c^2\))的定理(又稱勾股定理)。距離公式就是把這個定理套用到坐標上。台灣在國中八年級學習。 |
| 斜邊 | 直角三角形中直角對面的邊,也是最長的邊。在距離公式中,連接兩點的線段就是直角三角形的斜邊。 |
| 歐幾里得距離 | 本頁計算的「兩點直線相連的距離」的正式名稱。在資料分析和 AI 領域,常用這個名稱指衡量點與點遠近的基本距離。 |
| 斜率 | 表示直線傾斜程度的數,也就是「x 增加 1 時 y 增加多少」,和一次函數的變化率相同。台灣在高中一年級學習。 |
| 鉛直線 | 與 x 軸垂直(上下直直延伸)的直線。通過 x 坐標相同的兩點的直線就是鉛直線,x 的變化量為 0,所以斜率不存在。方程式是 \(x = c\)(\(c\) 為常數)的形式。 |
建議先了解的基礎知識
為了讓您「理解意義」地使用本頁的計算,這裡整理了事先了解會更好懂的基礎知識。
遇到卡關時,回頭複習這些內容是最快的捷徑。
| 坐標平面(國中七年級,12~13 歲) |
|
| 正負數的計算(國中七年級,12~13 歲) |
|
| 平方根(國中八年級,13~14 歲) |
|
| 畢氏定理(國中八年級,13~14 歲) |
|
| 一次函數與斜率(國中八年級~高中一年級,13~16 歲) |
|
用 Excel 計算的方法
把下方表格整個複製,貼到 Excel 的 A1 儲存格就能直接使用。
求「兩點間的距離 d」的表格
| 點 1 的 x 坐標 x₁ | 1 |
| 點 1 的 y 坐標 y₁ | 1 |
| 點 2 的 x 坐標 x₂ | 4 |
| 點 2 的 y 坐標 y₂ | 5 |
| 兩點間的距離 d | =SQRT((B3-B1)^2+(B4-B2)^2) |
「用畢氏定理驗證」的表格
| 點 1 的 x 坐標 x₁ | 1 |
| 點 1 的 y 坐標 y₁ | 1 |
| 點 2 的 x 坐標 x₂ | 4 |
| 點 2 的 y 坐標 y₂ | 5 |
| x 的變化量 Δx | =B3-B1 |
| y 的變化量 Δy | =B4-B2 |
| 平方和 Δx²+Δy² | =B5^2+B6^2 |
| 兩點間的距離 d | =SQRT(B7) |
求「斜率 m 與直線方程式」的表格
| 點 1 的 x 坐標 x₁ | 1 |
| 點 1 的 y 坐標 y₁ | 5 |
| 點 2 的 x 坐標 x₂ | 3 |
| 點 2 的 y 坐標 y₂ | 2 |
| 斜率 m | =(B4-B2)/(B3-B1) |
| y 截距 b | =B2-B5*B1 |
貼上後,上方的列就是輸入欄,下方列的公式會自動算出結果。
「SQRT(…)」是平方根,「^2」是平方。
第一個表格會算出距離 5。第二個表格由 Δx = 3、Δy = 4 和平方和 25 求出同樣的距離 5,也能看到中間的值。
第三個表格會算出斜率 −1.5 和 y 截距 6.5(直線 y = −1.5x + 6.5)。兩點的 x 坐標相同時會變成除以 0,出現錯誤(#DIV/0!),表示斜率不存在(鉛直線)。
「SQRT(…)」是平方根,「^2」是平方。
第一個表格會算出距離 5。第二個表格由 Δx = 3、Δy = 4 和平方和 25 求出同樣的距離 5,也能看到中間的值。
第三個表格會算出斜率 −1.5 和 y 截距 6.5(直線 y = −1.5x + 6.5)。兩點的 x 坐標相同時會變成除以 0,出現錯誤(#DIV/0!),表示斜率不存在(鉛直線)。
用 Google 試算表計算的方法
把下方表格整個複製,貼到 Google 試算表的 A1 儲存格就能直接使用。
求「兩點間的距離 d」的表格
| 點 1 的 x 坐標 x₁ | 1 |
| 點 1 的 y 坐標 y₁ | 1 |
| 點 2 的 x 坐標 x₂ | 4 |
| 點 2 的 y 坐標 y₂ | 5 |
| 兩點間的距離 d | =SQRT((B3-B1)^2+(B4-B2)^2) |
「用畢氏定理驗證」的表格
| 點 1 的 x 坐標 x₁ | 1 |
| 點 1 的 y 坐標 y₁ | 1 |
| 點 2 的 x 坐標 x₂ | 4 |
| 點 2 的 y 坐標 y₂ | 5 |
| x 的變化量 Δx | =B3-B1 |
| y 的變化量 Δy | =B4-B2 |
| 平方和 Δx²+Δy² | =B5^2+B6^2 |
| 兩點間的距離 d | =SQRT(B7) |
求「斜率 m 與直線方程式」的表格
| 點 1 的 x 坐標 x₁ | 1 |
| 點 1 的 y 坐標 y₁ | 5 |
| 點 2 的 x 坐標 x₂ | 3 |
| 點 2 的 y 坐標 y₂ | 2 |
| 斜率 m | =(B4-B2)/(B3-B1) |
| y 截距 b | =B2-B5*B1 |
和 Excel 相同的公式(SQRT、^2)在 Google 試算表也能直接使用。把表格整個複製貼到 A1 儲存格,再把輸入欄的數值改成您自己的坐標即可。
用 Python 計算的方法
import math
x1, y1 = 1.0, 1.0 # 點 1 的坐標
x2, y2 = 4.0, 5.0 # 點 2 的坐標
delta_x = x2 - x1 # x 的變化量
delta_y = y2 - y1 # y 的變化量
distance = math.hypot(delta_x, delta_y) # 兩點間的距離(和 √(Δx²+Δy²) 相同)
print(f"兩點間的距離 d:{distance}")
# 附帶:通過兩點的直線的斜率與方程式(Δx 為 0 時是鉛直線,斜率不存在)
if delta_x != 0:
slope = delta_y / delta_x # 斜率 m
y_intercept = y1 - slope * x1 # y 截距 b
sign = "+" if y_intercept >= 0 else "-" # 把正負號分開,避免截距為負時顯示成「+ -0.3」
print(f"斜率 m:{slope}")
print(f"y 截距 b:{y_intercept}")
print(f"直線方程式:y = {slope}x {sign} {abs(y_intercept)}")
else:
print(f"鉛直線(x = {x1}),所以斜率不存在")
只用標準函式庫就能執行。math.hypot 是一次算出「平方和的平方根」的函數,也就是距離公式本身。請改寫開頭的坐標後執行。
用 LaTeX 等數學式語言的寫法(可直接複製)
兩點間的距離 \(d\)(距離公式)
d = √((x₂ − x₁)² + (y₂ − y₁)²)
d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_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>
</mrow>
</msqrt>
</mrow>
</math>
d = sqrt((x_2 - x_1)^2 + (y_2 - y_1)^2)
Sqrt[(x2 - x1)^2 + (y2 - y1)^2]
d := sqrt((x2 - x1)^2 + (y2 - y1)^2);
d = sqrt((x2 - x1)^2 + (y2 - y1)^2);
d = √((x_2 - x_1)^2 + (y_2 - y_1)^2)
為什麼這個公式能求出距離(畢氏定理)
Δx² + Δy² = d²
\Delta x^2 + \Delta y^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><mi>d</mi><mn>2</mn></msup>
</mrow>
</math>
(Delta x)^2 + (Delta y)^2 = d^2
dx^2 + dy^2 == d^2
dx^2 + dy^2 = d^2;
dx^2 + dy^2 == d^2
Δx^2 + Δy^2 = d^2
通過兩點的直線的斜率 \(m\) 與直線方程式 \(y = mx + b\)
m = (y₂ − y₁) ÷ (x₂ − x₁), y = mx + b (b = y₁ − m·x₁)
m = \frac{y_2 - y_1}{x_2 - x_1}, \quad y = mx + b, \quad b = y_1 - m x_1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>m</mi>
<mo>=</mo>
<mfrac>
<mrow><msub><mi>y</mi><mn>2</mn></msub><mo>−</mo><msub><mi>y</mi><mn>1</mn></msub></mrow>
<mrow><msub><mi>x</mi><mn>2</mn></msub><mo>−</mo><msub><mi>x</mi><mn>1</mn></msub></mrow>
</mfrac>
<mo>,</mo>
<mi>y</mi>
<mo>=</mo>
<mi>m</mi><mi>x</mi>
<mo>+</mo>
<mi>b</mi>
<mo>,</mo>
<mi>b</mi>
<mo>=</mo>
<msub><mi>y</mi><mn>1</mn></msub>
<mo>−</mo>
<mi>m</mi><msub><mi>x</mi><mn>1</mn></msub>
</mrow>
</math>
m = (y_2 - y_1)/(x_2 - x_1), y = m x + b, b = y_1 - m x_1
m = (y2 - y1)/(x2 - x1); b = y1 - m*x1; y = m*x + b
m := (y2 - y1)/(x2 - x1); b := y1 - m*x1; y := m*x + b;
m = (y2 - y1)/(x2 - x1); b = y1 - m*x1; y = m*x + b;
m = (y_2 - y_1)/(x_2 - x_1), y = mx + b, b = y_1 - mx_1
請 ChatGPT 幫忙計算的方法
你是數學的計算助理。請務必實際執行 Python 程式碼來進行以下計算,並且只根據執行結果的數值回答(不要用心算或推測回答)。 針對坐標平面上的兩點 (1, 1) 和 (4, 5),請分別求出: 1. 兩點間的距離 d(使用距離公式 d = √((x2−x1)² + (y2−y1)²)) 2. x 的變化量 Δx 和 y 的變化量 Δy 3. 通過這兩點的直線的斜率 m,以及直線方程式 y = mx + b(也請列出 y 截距 b 的值) 請列出使用的公式和執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
簡單又免費
免費且無使用次數限制
不需專業知識,操作直覺又簡單
不需專業知識,操作直覺又簡單
免註冊會員
開啟頁面即可立即使用
無須登錄任何個人資料
無須登錄任何個人資料
安全又安心
通訊全程高度加密
按下「下載」後自動刪除檔案
按下「下載」後自動刪除檔案
高速
顯示與轉換都快速順暢,毫無等待壓力
無浮水印
沒有浮水印
無須標註來源出處
無須標註來源出處
可商業使用
可免費用於商業用途
亦無須事先取得商用授權
亦無須事先取得商用授權