軌跡の求め方
軌跡とは
「振り子が空気中を動くとき、振り子の先端が描く道すじ」——これが軌跡のイメージです。ある条件を満たしながら動く点が、どんな図形を描くかを調べるのが軌跡の問題です。
「点 P が条件 C を満たしながら動くとき、P が通る道すじ全体」を軌跡(locus)と言います。
条件 C は例えば:
- 「2 定点から等距離」→ 垂直二等分線
- 「1 定点から距離が一定」→ 円
- 「線分の中点」→ 何らかの直線や円弧
- 「2 定点からの距離の和が一定」→ 楕円
軌跡の問題は幾何の条件を代数の式に翻訳する訓練です——「日本語の条件を数式に書き換える」と考えると分かりやすいです。
軌跡を求める手順
ステップ 1: 求めたい点の座標を とおく——「答えの点に名前をつける」
ステップ 2: 問題の条件を の等式(または不等式)に翻訳する——「日本語を数式にする」
ステップ 3: 式を整理・変形して標準的な形(直線・円・放物線等)を特定する——「どんな図形かを見抜く」
ステップ 4: (重要!) の取りうる範囲を確認し、軌跡の一部かどうか確認する——「答えが正しい範囲か検証する」
典型パターン①:中点の軌跡
問題: 点 A と、円 上の点 B の中点 M の軌跡を求めよ。
「B が円の上を動くとき、A と B の真ん中の点はどんな軌跡を描くか」——B が動くとMも動きます。
解法:
B の座標を とおく()。
M の座標は とおくと——「Mの座標をxとyで表すと」:
B は円上なので ——「BがもとのCircle上にある」という条件を代入:
中心 、半径 の円が軌跡——「元の円を半径半分にして、AとBの中点の方向に移動した円」です。
インタラクティブ図解:軌跡の可視化
点 A を固定し、点 B が円上を動くとき、その中点 M が描く軌跡をリアルタイムで見てみましょう。
var OX = 300, OY = 190, SC = 45;
var trail = [];
var t = 0;
function toS(x, y) { return [OX + x*SC, OY - y*SC]; }
function loop() {
ctx.clearRect(0, 0, W, H);
t += 0.025;
// グリッド
ctx.strokeStyle = '#161b22'; ctx.lineWidth = 1;
for (var gx = -6; gx <= 6; gx++) {
ctx.beginPath(); ctx.moveTo(OX+gx*SC,0); ctx.lineTo(OX+gx*SC,H); ctx.stroke();
}
for (var gy = -4; gy <= 4; gy++) {
ctx.beginPath(); ctx.moveTo(0,OY-gy*SC); ctx.lineTo(W,OY-gy*SC); 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);
// 元の円 x²+y²=9 (r=3)
ctx.beginPath(); ctx.arc(OX, OY, 3*SC, 0, Math.PI*2);
ctx.strokeStyle = '#30363d'; ctx.lineWidth = 1.5; ctx.stroke();
// 点 A (2, 0)
var Ax = 2, Ay = 0;
var As = toS(Ax, Ay);
ctx.beginPath(); ctx.arc(As[0], As[1], 7, 0, Math.PI*2);
ctx.fillStyle = '#f0883e'; ctx.fill();
ctx.fillStyle = '#f0883e'; ctx.font = 'bold 13px sans-serif';
ctx.fillText('A(2, 0)', As[0]+10, As[1]-8);
// 点 B: 円上を動く
var Bx = 3 * Math.cos(t), By = 3 * Math.sin(t);
var Bs = toS(Bx, By);
ctx.beginPath(); ctx.arc(Bs[0], Bs[1], 6, 0, Math.PI*2);
ctx.fillStyle = '#58a6ff'; ctx.fill();
ctx.fillStyle = '#58a6ff'; ctx.font = 'bold 13px sans-serif';
ctx.fillText('B', Bs[0]+8, Bs[1]-6);
// 中点 M
var Mx = (Ax + Bx) / 2, My = (Ay + By) / 2;
var Ms = toS(Mx, My);
// 軌跡のトレイル
trail.push([Ms[0], Ms[1]]);
if (trail.length > 200) trail.shift();
for (var i = 1; i < trail.length; i++) {
var alpha = i / trail.length;
ctx.beginPath();
ctx.moveTo(trail[i-1][0], trail[i-1][1]);
ctx.lineTo(trail[i][0], trail[i][1]);
ctx.strokeStyle = 'rgba(86, 211, 100, ' + alpha + ')';
ctx.lineWidth = 2;
ctx.stroke();
}
// 理論的な軌跡円: 中心(1,0), r=1.5
ctx.beginPath(); ctx.arc(toS(1,0)[0], toS(1,0)[1], 1.5*SC, 0, Math.PI*2);
ctx.strokeStyle = '#56d36440'; ctx.lineWidth = 1.5; ctx.setLineDash([5,3]);
ctx.stroke(); ctx.setLineDash([]);
// AB 線分
ctx.beginPath(); ctx.moveTo(As[0], As[1]); ctx.lineTo(Bs[0], Bs[1]);
ctx.strokeStyle = '#8b949e'; ctx.lineWidth = 1; ctx.setLineDash([3,3]);
ctx.stroke(); ctx.setLineDash([]);
// M
ctx.beginPath(); ctx.arc(Ms[0], Ms[1], 7, 0, Math.PI*2);
ctx.fillStyle = '#56d364'; ctx.fill();
ctx.fillStyle = '#56d364'; ctx.font = 'bold 13px sans-serif';
ctx.fillText('M', Ms[0]+8, Ms[1]-6);
// 情報パネル
ctx.fillStyle = '#0d1117e0';
ctx.fillRect(8, 8, 240, 100);
ctx.strokeStyle = '#30363d'; ctx.lineWidth = 1;
ctx.strokeRect(8, 8, 240, 100);
ctx.font = '12px monospace';
ctx.fillStyle = '#e6edf3';
ctx.fillText('B = (' + Bx.toFixed(2) + ', ' + By.toFixed(2) + ')', 16, 28);
ctx.fillStyle = '#56d364';
ctx.fillText('M = (' + Mx.toFixed(2) + ', ' + My.toFixed(2) + ')', 16, 48);
ctx.fillStyle = '#8b949e';
ctx.fillText('軌跡:(x-1)²+y²= 9/4', 16, 68);
ctx.fillStyle = '#79c0ff';
ctx.fillText('中心(1,0) 半径 3/2', 16, 88);
requestAnimationFrame(loop);
}
loop();
典型パターン②:等距離条件
問題: 定点 A と定直線 から等距離にある点 P の軌跡を求めよ。
「ある点と直線から等距離の点の集まり」——これは前回学んだ放物線の定義そのものです!
解法:
P とおく。A からの距離 = 直線 からの距離より:
両辺を 2 乗——「両辺を2乗してルートを外す」定番の手順:
放物線 (焦点 、準線 )——これは放物線の定義そのものです!
典型パターン③:比分点の軌跡
問題: 2 定点 A、B に対して となる点 P の軌跡を求めよ。
「2点からの距離の比が一定」という条件——結果は「アポロニウスの円」と呼ばれます。
解法(アポロニウスの円):
P とおく。 なので ——「距離の比を等式にする」:
中心 、半径 の円(アポロニウスの円)。
よくある軌跡の結果まとめ
| 条件 | 軌跡 |
|---|---|
| 1 定点から一定距離 | 円 |
| 2 定点から等距離 | 垂直二等分線 |
| 2 定点からの距離の比が一定 | 円(アポロニウス) |
| 2 定点からの距離の和が一定 | 楕円 |
| 2 定点からの距離の差の絶対値が一定 | 双曲線 |
| 1 定点と 1 定直線から等距離 | 放物線 |
注意点:範囲の確認
軌跡を求めたら必ず「点が取りうる範囲」を確認します——「式は正しくても、点が実際には到達しない場所がある」ことがあります。
例:直径 AB の両端 A、B を使い、AB を直径とする円の円周上の点 P を求める問題では、(タレスの定理)という条件から (中心 半径 の円)が得られますが、A と B 自身は含まれません——「A や B では が定義できないから」。
まとめ
- 軌跡 = 条件を満たす点 の集合を式で表したもの——「条件を満たす点の居場所」
- 手順:条件を の式に翻訳 → 整理 → 標準形に変形——「日本語→数式→図形名」
- 典型パターン(等距離・比・中点)をマスターすると多くの問題が解ける
- 範囲の確認を忘れずに(端点・除外点のチェック)——「正しい式でも範囲を間違えると答えが変わる」
次回は「不等式の表す領域」——方程式から不等式へと視点を広げます。