円の方程式(基礎)
中心と半径を動かして、円の方程式が「距離」そのものであることを確かめる
- 1
- 円の方程式 は、中心 から距離がちょうど である点の集まりを表す
- 2
- この式は三平方の定理(ピタゴラスの定理)を座標平面上の2点間の距離にそのまま当てはめたものにすぎない
- 3
- 点と中心の距離を半径 と比較するだけで、その点が円の内側・円周上・外側のどこにあるかを判定できる
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
円の方程式 $(x-h)^2 + (y-k)^2 = r^2$ は、中心 $(h,k)$ から距離がちょうど $r$ である点の集まりを表す
身につく武器・思考力
この式は三平方の定理(ピタゴラスの定理)を座標平面上の2点間の距離にそのまま当てはめたものにすぎない
実社会・ITでの活躍現場
- •ゲーム・物理シミュレーションの円形当たり判定(衝突検出)
- •ITシステム・アルゴリズム実装における論理設計
- •データ分析やシミュレーションにおける数理モデリング
Layer 1 — 直感・シミュレーター
スライダーで中心 と半径 を動かして、円がどう移動・拡大縮小するかを見てみよう。平面上の点をドラッグすると、その点が円の中心からどれだけ離れているかが計算され、円の「内側」「円周上」「外側」のどこにあるかがリアルタイムに判定される。
中心からの距離 = 3.16、半径 r = 2.00(距離 > 半径 なので円の外側)
↑ 中心 (h, k) と半径 r をスライダーで動かし、円をドラッグして動く点との位置関係を確認しよう。 点と中心の距離を半径と比べるだけで、内側・円周上・外側の判定ができることが分かる。
中心 、半径 の円の方程式として正しいものはどれか。
Layer 2 — 定義・受験・証明
定義
座標平面上で、中心 から距離がちょうど ()である点 の集合を「円」と呼び、その方程式は次のように表される。
特に中心が原点 の場合は というシンプルな形になる。
公式・数理モデル
証明・導出
円の方程式は「2点間の距離の公式」から直接導かれる。
2点 と の距離は、三平方の定理(直角三角形の斜辺の長さ)より
である。
円周上の任意の点を 、中心を とすると、この点と中心の距離は常に半径 に等しいという「円の定義」から、
両辺を2乗して根号を外すと、円の方程式
が得られる。つまり円の方程式は、三平方の定理を「中心からの距離が一定」という条件に当てはめただけのものである。
押さえておきたいポイント
- 円の方程式は本質的に「中心からの距離 = 半径」という定義を2乗した形にすぎない
- 点 について を計算し、それが より小さければ内側、等しければ円周上、大きければ外側にある
- 中心が原点のとき となり、単位円()は三角関数 の定義の土台になる
- 円の方程式を展開すると の形になり、これは高校で学ぶ一般形の円の方程式につながる
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
ゲーム・物理シミュレーションの円形当たり判定(衝突検出)
ゲームプログラミングでは、キャラクターや弾丸を円(circle collider)として近似し、「2つの円の中心間の距離が半径の和より小さいか」を判定することで高速な衝突検出を行う。これは円の方程式の「距離と半径の比較」という考え方をそのまま2体の物体間に応用したものである。
1type Circle = { x: number; y: number; r: number };23// 点が円の内側・円周上・外側のどこにあるかを判定4function locatePoint(px: number, py: number, circle: Circle): "inside" | "on" | "outside" {5 const distSq = (px - circle.x) ** 2 + (py - circle.y) ** 2;6 const rSq = circle.r * circle.r;78 if (distSq < rSq) return "inside";9 if (distSq === rSq) return "on";10 return "outside";11}1213// 2つの円形オブジェクト(当たり判定用コライダー)が衝突しているか判定14function isCircleColliding(a: Circle, b: Circle): boolean {15 const dx = a.x - b.x;16 const dy = a.y - b.y;17 const distSq = dx * dx + dy * dy;18 const radiusSum = a.r + b.r;1920 // 平方根の計算(sqrt)は重いので、2乗のまま比較して高速化する21 return distSq <= radiusSum * radiusSum;22}2324// 例: プレイヤー(半径0.5)と敵(半径1.0)の当たり判定25const player: Circle = { x: 0, y: 0, r: 0.5 };26const enemy: Circle = { x: 1.2, y: 0, r: 1.0 };2728console.log(isCircleColliding(player, enemy)); // true(重なっている)29console.log(locatePoint(0.3, 0, player)); // "inside"
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元