円の方程式
円とは何か(定義から始める)
「コンパスで円を描く」——中心に針を刺して、一定の長さのまま回転させます。「中心から同じ距離にある点の集まり」、それが円です。
この「中心から等距離」という条件をピタゴラスの定理で式にします。中心 、半径 の円上の点 は、ピタゴラスの定理より:
これを円の標準形といいます。「中心からの距離が r」という条件そのものが式になっています。
標準形から一般形へ
標準形を展開すると——カッコを全部外すと:
、、 と置くと:
これを円の一般形といいます。「x²+y²の係数が同じで1」という特徴で、円であることが分かります。
一般形から標準形への変換(平方完成)
一般形が与えられたとき、平方完成で標準形に戻します——「バラバラになった式を元の形に戻す」操作です。
よって中心 、半径
のときのみ円として存在します。 は一点、 は実数解なし(虚円)——「半径がマイナスになる円は現実には存在しない」。
インタラクティブ図解:円の方程式リアルタイム表示
クリックで中心を移動、マウスを動かすと半径が変わります。標準形と一般形の係数がリアルタイムに更新されます。
var OX = 300, OY = 200, SCALE = 40;
var centerX = 1, centerY = 1; // 数学座標
var clickX = OX + SCALE, clickY = OY - SCALE;
function toScreen(x, y) { return [OX + x * SCALE, OY - y * SCALE]; }
function toMath(sx, sy) { return [(sx - OX) / SCALE, (OY - sy) / SCALE]; }
function loop() {
ctx.clearRect(0, 0, W, H);
// クリックで中心更新
var cm = toMath(clickX, clickY);
// clickX/clickY はマウスクリックで更新されるが、ここではmx/myを使って疑似的に
// 実際には常にmxから距離計算
var mathC = toMath(mx, my);
// 半径 = マウスと中心の距離(画面座標)
var cx_s = OX + centerX * SCALE;
var cy_s = OY - centerY * SCALE;
var dr = Math.sqrt(Math.pow(mx - cx_s, 2) + Math.pow(my - cy_s, 2));
var r = dr / SCALE;
if (r < 0.3) r = 0.3;
if (r > 5) r = 5;
// グリッド
ctx.strokeStyle = '#161b22';
ctx.lineWidth = 1;
for (var gx = -7; gx <= 7; gx++) {
ctx.beginPath(); ctx.moveTo(OX + gx*SCALE, 0); ctx.lineTo(OX + gx*SCALE, H); ctx.stroke();
}
for (var gy = -5; gy <= 5; gy++) {
ctx.beginPath(); ctx.moveTo(0, OY - gy*SCALE); ctx.lineTo(W, OY - gy*SCALE); ctx.stroke();
}
// 軸
ctx.strokeStyle = '#30363d'; ctx.lineWidth = 1.5;
ctx.beginPath(); ctx.moveTo(0, OY); ctx.lineTo(W, OY); ctx.stroke();
ctx.beginPath(); ctx.moveTo(OX, 0); ctx.lineTo(OX, H); ctx.stroke();
ctx.fillStyle = '#8b949e'; ctx.font = '12px sans-serif';
ctx.fillText('x', W-14, OY-8); ctx.fillText('y', OX+6, 14);
// 円
var cxs = toScreen(centerX, centerY);
ctx.beginPath();
ctx.arc(cxs[0], cxs[1], r * SCALE, 0, Math.PI * 2);
ctx.strokeStyle = '#58a6ff';
ctx.lineWidth = 2.5;
ctx.stroke();
ctx.fillStyle = '#58a6ff08';
ctx.fill();
// 中心
ctx.beginPath();
ctx.arc(cxs[0], cxs[1], 5, 0, Math.PI * 2);
ctx.fillStyle = '#f0883e'; ctx.fill();
ctx.fillStyle = '#f0883e'; ctx.font = '12px sans-serif';
ctx.fillText('(' + centerX.toFixed(1) + ', ' + centerY.toFixed(1) + ')', cxs[0]+8, cxs[1]-8);
// 半径線
ctx.beginPath();
ctx.moveTo(cxs[0], cxs[1]);
ctx.lineTo(mx, my);
ctx.strokeStyle = '#f0883e80';
ctx.lineWidth = 1.5;
ctx.setLineDash([4,3]); ctx.stroke(); ctx.setLineDash([]);
// マウス上の点(円上に投影)
var angle = Math.atan2(my - cxs[1], mx - cxs[0]);
var px = cxs[0] + r * SCALE * Math.cos(angle);
var py = cxs[1] + r * SCALE * Math.sin(angle);
ctx.beginPath(); ctx.arc(px, py, 4, 0, Math.PI*2);
ctx.fillStyle = '#79c0ff'; ctx.fill();
// 半径ラベル
ctx.fillStyle = '#f0883e'; ctx.font = '12px sans-serif';
ctx.fillText('r = ' + r.toFixed(2), (cxs[0]+mx)/2+6, (cxs[1]+my)/2-6);
// 方程式計算
var a = centerX, b = centerY;
var D = -2 * a, E = -2 * b, F = a*a + b*b - r*r;
// パネル
ctx.fillStyle = '#0d1117e0';
ctx.fillRect(8, 8, 280, 120);
ctx.strokeStyle = '#30363d'; ctx.lineWidth = 1;
ctx.strokeRect(8, 8, 280, 120);
ctx.font = 'bold 13px monospace';
ctx.fillStyle = '#e6edf3';
ctx.fillText('標準形:', 16, 30);
ctx.fillStyle = '#58a6ff';
ctx.fillText('(x-' + a.toFixed(1) + ')²+(y-' + b.toFixed(1) + ')²', 16, 50);
ctx.fillText(' = ' + (r*r).toFixed(2), 16, 68);
ctx.fillStyle = '#8b949e'; ctx.font = '11px monospace';
ctx.fillText('一般形:', 16, 88);
ctx.fillStyle = '#79c0ff'; ctx.font = '11px monospace';
ctx.fillText('x²+y²' + (D>=0?'+':'')+D.toFixed(2)+'x' + (E>=0?'+':'')+E.toFixed(2)+'y' + (F>=0?'+':'')+F.toFixed(2)+'=0', 16, 106);
ctx.fillStyle = '#56d364'; ctx.font = '11px monospace';
ctx.fillText('中心(' + a.toFixed(2)+','+b.toFixed(2)+') r='+r.toFixed(2), 16, 122);
requestAnimationFrame(loop);
}
loop();
具体的な例題
例題 1:標準形を書く
中心 、半径 の円の方程式を求めよ。
「(x - 中心のx)² + (y - 中心のy)² = 半径²」に当てはめるだけ:
解:
例題 2:一般形を標準形に変換
の中心と半径を求めよ。
「xの項とyの項を別々にまとめて、それぞれ平方完成する」のが手順です:
解(平方完成):
中心 、半径
例題 3:3 点を通る円
3 点 A、B、C を通る円の方程式を求めよ。
「3点を通る円は一意に決まる」——3点の座標を使って3つの方程式を作り、連立して解きます:
解: 一般形 に 3 点を代入:
- A:
- B:
- C:
A と B より 。A より 。C に代入:
両辺 3 倍:
原点中心の円:最もシンプルな形
中心が原点 のとき——「引く数がゼロだから何も変わらない」:
単位円は (前回学んだ三角比の舞台!)——「半径1の円上の点の座標が 」でしたね。
まとめ
- 標準形 :中心・半径が一目瞭然——「コンパスの設定を式にした形」
- 一般形 :展開した形——「x²+y²が見えたら円を疑う」
- 一般形 → 標準形:平方完成が鍵——「xの項、yの項をそれぞれまとめる」
- 3 点から円:一般形に代入して連立方程式——「3点あれば円は一意に決まる」
次回は「直線と円の位置関係」——交わる・接する・離れる——を判定する方法を学びます。