請選擇轉換方向,並輸入圓方程式的係數。下方的數學式和輸入欄是連動的,直接改寫式中的係數也能計算。若要判斷直線與圓的關係,請在最後一個下拉選單選擇「同時判斷與直線 px + qy + s = 0 的關係」。
這個頁面可以做什麼
- 把圓方程式的一般式 \(x^{2} + y^{2} + lx + my + n = 0\) 配方成標準式 \((x - a)^{2} + (y - b)^{2} = r^{2}\),以分數和 \(\sqrt{\ }\) 的精確值求出圓心與半徑(附計算過程)
- 反過來,也能由圓心和等號右邊(半徑的平方)展開成一般式
- 等號右邊的 \(r^{2}\) 小於或等於 0、「不是圓」的情況(只表示一個點、或沒有圖形),也會附上理由判斷出來
- 比較圓心到直線的距離 \(d\) 與半徑 \(r\),判斷直線 \(px + qy + s = 0\) 與圓的關係(相交於兩點、相切、沒有交點),並以精確值求出交點坐標
- 計算機會顯示和手寫相同形式的圓方程式,也可以直接改寫式中的係數來計算。計算結果也能從圓與直線的圖形確認
這個計算有什麼用?
在 2D 遊戲中,把角色或子彈的「碰撞範圍」近似成圓是常見的做法。子彈的軌跡(直線)有沒有打中敵人的圓,正是用本頁的判斷方法:比較圓心到直線的距離 \(d\) 與半徑 \(r\)。兩個圓有沒有重疊,也同樣是比較兩個圓心的距離與兩個半徑的和。
之所以用圓,是因為圓轉動時形狀不變,只要一次距離計算就能判斷。學習遊戲程式設計時,每一個畫面都會看到圓方程式在運作。
在沒有障礙物的理想條件下,手機基地台或 Wi-Fi 路由器的訊號範圍,可以用以天線為圓心的圓來表示(半徑=訊號可達的距離)。「這個地點收得到訊號嗎?」就是比較到圓心的距離和半徑,也就是判斷這個地點在圓內還是圓外。
實際的訊號會受到地形和建築物影響,不會完全符合這個模型。即使如此,圓的模型仍是規劃基地台位置、避免出現訊號死角的出發點。
GPS 定位的基本想法是:知道和衛星之間的距離後,自己可能所在的位置就縮小到一個球面上(在平面上思考就是圓)。把到多顆衛星的距離所形成的圓(球面)聯立,求出它們交會的點,就是自己的位置。
實際的計算是在三維空間中進行,還要修正時鐘的誤差,所以更複雜。不過,圓方程式「到某點距離固定的點所成的集合」這個想法,正是它的基礎。
機械零件和建築的圖面上到處都是圓:螺栓孔、圓弧形的邊緣、管線的截面等。CAD 軟體用「圓心坐標和半徑」(也就是標準式的資訊)來記錄圓,每次編輯圖形時都會計算圓與直線的交點和切線。
「在這裡鑽孔,離邊緣夠遠嗎?」這類檢查,最後也是歸結為計算到圓心的距離。
道路和鐵路彎道的基本形狀是稱為「圓曲線」的圓弧,設計圖上用圓心和半徑來管理。半徑越小,彎道越急,所以道路的設計規範會依設計速率訂定最小曲線半徑。
直線段和彎道平順銜接的地方,直接用到「直線與圓相切」這個條件。切線的概念,實際塑造了我們行走的道路。
公式與圖示
符號與用語解說
符號
| \((x,\ y)\) | x、y | 在圓上移動的點的坐標。圓方程式的意思是「把滿足這個式子的 \((x,\ y)\) 全部集合起來就是圓」。 |
| \(a,\ b\) | a、b | 表示圓心坐標 \((a,\ b)\) 的字母。表示固定的數時,習慣使用字母表開頭的字母。和會移動的 \(x\)、\(y\) 不同,對同一個圓來說它們是固定的。台灣的課本多半把圓心寫成 \((h,\ k)\)。 |
| \(r\) | r | 圓的半徑,取自英文 radius 的第一個字母。請注意,標準式等號右邊出現的不是 \(r\) 本身,而是它的平方 \(r^{2}\)。 |
| \(\mathrm{C}\) | C | 常用來表示圓心的字母,取自英文 center 的第一個字母。有時也用 \(C\) 來命名圓本身。 |
| \(l,\ m,\ n\) | l、m、n | 一般式 \(x^{2} + y^{2} + lx + my + n = 0\) 的係數。台灣的課本常寫成 \(x^{2} + y^{2} + dx + ey + f = 0\),意思相同。 |
| \(d\) | d | 圓心到直線的距離,取自英文 distance 的第一個字母。和半徑 \(r\) 比較大小,就能決定圓與直線的關係。 |
| \(p,\ q,\ s\) | p、q、s | 本頁把直線寫成 \(px + qy + s = 0\) 時的係數。直線通常寫成 \(ax + by + c = 0\),但為了不和圓心 \((a,\ b)\) 混淆,本頁改用其他字母。 |
| \(\sqrt{\ }\) | 根號 | 表示「平方後等於該數的正數」(平方根)的符號。半徑用 \(r = \sqrt{r^{2}}\) 求出。例如 \(r^{2} = 8\) 時,\(r = \sqrt{8} = 2\sqrt{2}\)。 |
用語
| 圓 | 平面上到某一點(圓心)的距離固定(半徑)的所有點所形成的圖形。把這個「距離固定」的定義寫成式子,就是圓方程式。 |
| 圓方程式 | 表示坐標平面上的圓的式子,也稱為圓的方程式。滿足式子的點 \((x,\ y)\) 所成的集合正好是圓。在高中的「直線與圓」單元學到。 |
| 標準式 | \((x - a)^{2} + (y - b)^{2} = r^{2}\) 的形式(課本常寫成 \((x - h)^{2} + (y - k)^{2} = r^{2}\))。優點是只要看式子就能讀出圓心 \((a,\ b)\) 和半徑 \(r\)。 |
| 一般式 | 把標準式展開整理後的 \(x^{2} + y^{2} + lx + my + n = 0\) 形式。雖然不能直接讀出圓心和半徑,但因為已經展開,在計算過程中比較好處理。 |
| 配方法 | 把 \(x^{2} + lx\) 這種式子改寫成 \(\left(x + \dfrac{l}{2}\right)^{2} - \dfrac{l^{2}}{4}\) 這種「(某個式子)的平方+常數」的方法,也簡稱「配方」。求二次函數的頂點時也會用到,是本頁計算的核心技巧。 |
| 圓心 | 圓正中央的點,到圓上任何一點的距離都相等(=半徑)。標準式中的 \((a,\ b)\) 就是圓心坐標。 |
| 半徑 | 從圓心到圓上一點的距離 \(r\)。因為是長度,一定是正數。取標準式等號右邊 \(r^{2}\) 的平方根求出。 |
| 畢氏定理 | 直角三角形中「斜邊的平方=另外兩邊的平方和」的定理(也稱為商高定理)。兩點距離公式就是以它為基礎,圓的標準式也是把這個定理寫成式子。在國中八年級學到。 |
| 交點 | 同時在兩個圖形上的點。以圓與直線來說,相交時有 2 個,相切時有 1 個,相離時有 0 個。坐標要把兩個式子聯立求出。 |
| 相切 | 圓與直線只有一個交點。這條直線稱為切線,那個交點稱為切點。圓心到切線的距離正好等於半徑。 |
| 弦 | 圓與直線相交於兩點時,連接這兩點的線段。從圓心到弦的垂線會把弦正好平分,所以半弦長、圓心到直線的距離 \(d\) 與半徑 \(r\) 之間符合畢氏定理。 |
| 點到直線的距離 | 從點到直線所作垂線的長度(點到直線的最短距離)。用 \(d = \dfrac{|ax_0 + by_0 + c|}{\sqrt{a^{2} + b^{2}}}\) 計算,可用來判斷圓與直線的關係。 |
| 判別式 | 告訴我們一元二次方程式 \(ax^{2} + bx + c = 0\) 有幾個解的式子 \(D = b^{2} - 4ac\)。把圓與直線的方程式聯立所得一元二次方程式的判別式,也能判斷兩者的關係(\(D > 0\):兩個交點,\(D = 0\):相切,\(D < 0\):沒有交點)。 |
| 坐標平面 | 把水平的數線(\(x\) 軸)和鉛直的數線(\(y\) 軸)垂直相交,讓每個點的位置都能用一組數 \((x,\ y)\) 表示的平面。是圖形和方程式交會的地方。 |
建議先了解的基礎知識
為了能「理解意義」地使用這個頁面的計算,這裡整理了建議先了解的基礎知識。
遇到卡關時,回頭複習表中的內容是最快的方法。
| 坐標平面與點的坐標(國中七年級,12~13 歲) |
|
| 畢氏定理與兩點距離(國中八年級,13~14 歲) |
|
| 平方根(國中八年級,13~14 歲) |
|
| 乘法公式、因式分解與配方法(國中八年級~高一,13~16 歲) |
|
| 點到直線的距離(高中,15~17 歲) |
|
用 Excel 計算的方法
| x 的係數 l | -4 |
| y 的係數 m | -6 |
| 常數項 n | 9 |
| 圓心的 x 坐標(−l/2) | =-B1/2 |
| 圓心的 y 坐標(−m/2) | =-B2/2 |
| 半徑的平方 r²(l²/4 + m²/4 − n) | =B1^2/4+B2^2/4-B3 |
| 半徑 r(只有 r² > 0 時才是圓) | =IF(B6>0,SQRT(B6),"不是圓") |
| 圓心的 x 坐標 a | 1 |
| 圓心的 y 坐標 b | -2 |
| 等號右邊的值(半徑的平方 r²) | 9 |
| x 的係數 l(−2a) | =-2*B1 |
| y 的係數 m(−2b) | =-2*B2 |
| 常數項 n(a² + b² − r²) | =B1^2+B2^2-B3 |
| 圓心的 x 坐標 a | 2 |
| 圓心的 y 坐標 b | 3 |
| 半徑 r | 2 |
| 直線的 x 係數 p | 3 |
| 直線的 y 係數 q | 4 |
| 直線的常數項 s | -8 |
| 圓心到直線的距離 d | =ABS(B4*B1+B5*B2+B6)/SQRT(B4^2+B5^2) |
| 關係的判斷 | =IF(B7<B3,"相交於相異兩點",IF(B7=B3,"相切","沒有交點")) |
第 1 個表格是 x²+y²−4x−6y+9=0 的例子:圓心 (2, 3),r²=4,半徑 2。r² 小於或等於 0 時不是圓,儲存格會顯示「不是圓」。
第 2 個表格是圓心 (1, −2)、r²=9 的例子:l=−2,m=4,n=−4,所以式子是 x²+y²−2x+4y−4=0。
第 3 個表格是圓 (x−2)²+ (y−3)²=4 與直線 3x+4y−8=0 的例子。d=2 和半徑 2 相等,所以結果是「相切」。SQRT 可能有些微的小數誤差,若要精確判斷是否相切,比較 d² 和 r² 比較保險(比較 = (B4*B1+B5*B2+B6)^2/(B4^2+B5^2) 和 B3^2)。
用 Google 試算表計算的方法
| x 的係數 l | -4 |
| y 的係數 m | -6 |
| 常數項 n | 9 |
| 圓心的 x 坐標(−l/2) | =-B1/2 |
| 圓心的 y 坐標(−m/2) | =-B2/2 |
| 半徑的平方 r²(l²/4 + m²/4 − n) | =B1^2/4+B2^2/4-B3 |
| 半徑 r(只有 r² > 0 時才是圓) | =IF(B6>0,SQRT(B6),"不是圓") |
| 圓心的 x 坐標 a | 1 |
| 圓心的 y 坐標 b | -2 |
| 等號右邊的值(半徑的平方 r²) | 9 |
| x 的係數 l(−2a) | =-2*B1 |
| y 的係數 m(−2b) | =-2*B2 |
| 常數項 n(a² + b² − r²) | =B1^2+B2^2-B3 |
| 圓心的 x 坐標 a | 2 |
| 圓心的 y 坐標 b | 3 |
| 半徑 r | 2 |
| 直線的 x 係數 p | 3 |
| 直線的 y 係數 q | 4 |
| 直線的常數項 s | -8 |
| 圓心到直線的距離 d | =ABS(B4*B1+B5*B2+B6)/SQRT(B4^2+B5^2) |
| 關係的判斷 | =IF(B7<B3,"相交於相異兩點",IF(B7=B3,"相切","沒有交點")) |
用 Python 計算的方法
from fractions import Fraction
import math
# 一般式 x² + y² + lx + my + n = 0 的係數(3/4 這樣的分數可以寫成 Fraction(3, 4))
coef_l = Fraction(-4)
coef_m = Fraction(-6)
coef_n = Fraction(9)
center_x = -coef_l / 2
center_y = -coef_m / 2
radius_squared = coef_l ** 2 / 4 + coef_m ** 2 / 4 - coef_n
print(f"圓心:({center_x}, {center_y})")
print(f"半徑的平方 r²:{radius_squared}")
if radius_squared > 0:
print(f"半徑 r:{math.sqrt(radius_squared)}")
elif radius_squared == 0:
print("不是圓:只表示圓心這一個點")
else:
print("不是圓:沒有點滿足這個式子")
# 與直線 px + qy + s = 0 的關係(用分數比較 d² 和 r²,所以沒有捨入誤差)
line_p = Fraction(3)
line_q = Fraction(4)
line_s = Fraction(-8)
distance_squared = (line_p * center_x + line_q * center_y + line_s) ** 2 / (line_p ** 2 + line_q ** 2)
if distance_squared < radius_squared:
print("圓與直線相交於相異兩點")
elif distance_squared == radius_squared:
print("圓與直線相切")
else:
print("圓與直線沒有交點")
用 LaTeX 等數學式語言的寫法(可直接複製)
(x − a)² + (y − b)² = r²
(x - a)^{2} + (y - b)^{2} = r^{2}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mrow><mo>(</mo><mi>x</mi><mo>−</mo><mi>a</mi><mo>)</mo></mrow><mn>2</mn></msup>
<mo>+</mo>
<msup><mrow><mo>(</mo><mi>y</mi><mo>−</mo><mi>b</mi><mo>)</mo></mrow><mn>2</mn></msup>
<mo>=</mo>
<msup><mi>r</mi><mn>2</mn></msup>
</mrow>
</math>
(x - a)^2 + (y - b)^2 = r^2
(x - a)^2 + (y - b)^2 == r^2
(x - a)^2 + (y - b)^2 = r^2;
(x - a)^2 + (y - b)^2 == r^2
(x - a)^2 + (y - b)^2 = r^2
(x + l/2)² + (y + m/2)² = l²/4 + m²/4 − n
\left(x + \frac{l}{2}\right)^{2} + \left(y + \frac{m}{2}\right)^{2} = \frac{l^{2}}{4} + \frac{m^{2}}{4} - n
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mrow><mo>(</mo><mi>x</mi><mo>+</mo><mfrac><mi>l</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mn>2</mn></msup>
<mo>+</mo>
<msup><mrow><mo>(</mo><mi>y</mi><mo>+</mo><mfrac><mi>m</mi><mn>2</mn></mfrac><mo>)</mo></mrow><mn>2</mn></msup>
<mo>=</mo>
<mfrac><msup><mi>l</mi><mn>2</mn></msup><mn>4</mn></mfrac>
<mo>+</mo>
<mfrac><msup><mi>m</mi><mn>2</mn></msup><mn>4</mn></mfrac>
<mo>−</mo>
<mi>n</mi>
</mrow>
</math>
(x + l/2)^2 + (y + m/2)^2 = l^2/4 + m^2/4 - n
Simplify[(x + l/2)^2 + (y + m/2)^2 - (l^2/4 + m^2/4 - n) == x^2 + y^2 + l x + m y + n]
Student:-Precalculus:-CompleteSquare(x^2 + y^2 + l*x + m*y + n, [x, y]);
expand((x + l/2)^2 + (y + m/2)^2 - (l^2/4 + m^2/4 - n))
(x + l/2)^2 + (y + m/2)^2 = l^2/4 + m^2/4 - n
d = |pa + qb + s| / √(p² + q²)
d = \frac{\left|pa + qb + s\right|}{\sqrt{p^{2} + q^{2}}}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>d</mi>
<mo>=</mo>
<mfrac>
<mrow><mo>|</mo><mi>p</mi><mi>a</mi><mo>+</mo><mi>q</mi><mi>b</mi><mo>+</mo><mi>s</mi><mo>|</mo></mrow>
<msqrt><mrow><msup><mi>p</mi><mn>2</mn></msup><mo>+</mo><msup><mi>q</mi><mn>2</mn></msup></mrow></msqrt>
</mfrac>
</mrow>
</math>
d = |p a + q b + s| / sqrt(p^2 + q^2)
d = Abs[p a + q b + s]/Sqrt[p^2 + q^2]
d := abs(p*a + q*b + s)/sqrt(p^2 + q^2);
d = abs(p*a + q*b + s)/sqrt(p^2 + q^2);
d = |pa + qb + s|/√(p^2 + q^2)
請 ChatGPT 幫忙計算的方法
你是數學(坐標幾何)的計算助理。請務必實際執行 Python 程式碼來進行以下計算,並只根據執行結果的數值回答(不要用心算或猜測作答)。 對於圓 x² + y² − 4x − 6y + 9 = 0,請分別列出以下內容: 1. 用配方法化成標準式 (x−a)² + (y−b)² = r² 的式子 2. 圓心與半徑(用精確值表示) 3. 直線 3x + 4y − 8 = 0 與這個圓的關係(相交於相異兩點/相切/沒有交點),若有交點也請列出坐標 在 Python 中請使用標準函式庫的 fractions 模組(或 sympy)精確計算,距離與半徑的比較請用 d² 和 r² 的比較進行。請列出所用的公式和執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權