正弦定理と余弦定理(三角測量)
直接行けない遠方の山や島までの距離を「角度」から精密に測る測量・GPSの基礎数学
- 1
- 正弦定理 a / sin A = 2R は「向かい合う辺と角の比が外接円の直径と一定」であることを示す
- 2
- 余弦定理 a^2 = b^2 + c^2 - 2bc cos A は「三平方の定理の一般化」であり、任意の三角形で辺の長さを求める
- 3
- 2地点の間の距離(基線)と目標物への2つの角度さえ分かれば、川を渡らずとも目標物までの距離を正確に計算できる(三角測量)
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
渡れない大河の対岸や登れない山の頂上など、「直接メジャーを当てられない遠方の距離や標高」を正確に測る測量技術から発展した。
身につく武器・思考力
直角三角形に限らず、あらゆる歪んだ三角形から「たった2つの角度と1つの辺」で未知の距離や角度を完全に逆算できるようになる。
実社会・ITでの活躍現場
- •国土の地図を作る三角測量やトンネル掘削の貫通測量
- •スマートフォンやカーナビのGPS位置推定(三辺測量)
- •3Dゲーム開発における敵キャラクターとプレイヤーの射角・距離判定
- •航空機や船舶のレーダー航法・風速補正ベクトル計算
Layer 1 — 直感・シミュレーター
三角測量シミュレーターの「観測地点 A, B」や「目標地点 P」の角度をスライダーで変更してみよう。2地点間の基線長 c と測角 α, β から、正弦定理を使って目標地点 P までの距離や標高がリアルタイムに算出される幾何学的メカニズムを体感できる。
算出された a, b および頂角 γ から、余弦定理 を計算すると 100.0 m となり、元の基線長 100 m と完全一致します。
三角形 ABC において、b = 5, c = 8, 角 A = 60° のとき、向かい合う辺 a の長さはいくつか?(cos 60° = 1/2)
Layer 2 — 定義・受験・証明
定義
任意の三角形 において、角 の対辺の長さをそれぞれ 、外接円の半径を とする。 - 正弦定理(Law of Sines):
- 余弦定理(Law of Cosines):
公式・数理モデル
証明・導出
余弦定理のベクトル・三平方による導出: 頂点 から対辺 に下ろした垂線の足を とする。 直角三角形 において、, である。 したがって となる。 直角三角形 に三平方の定理を適用すると、
のとき となり、有名なピタゴラスの定理 が自然に復元される。
押さえておきたいポイント
- 余弦定理は「三平方の定理の拡張版」であり、角度が90°でない斜交三角形でも成立する
- 「2辺とその間の角」が分かれば残りの1辺が求まり、「3辺」が分かればすべての角の余弦が求まる
- 正弦定理は「1辺とその両端の角」から残りのすべての辺を導出できるため、三角測量の主役となる
- GPS衛星からの電波伝播時間と三辺測量・三角測量を組み合わせることで、スマホの現在地が数メートルの精度で特定される
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
三角測量(Triangulation)による遠隔目標の距離・座標特定アルゴリズム
基線(長さ )の両端にある2基のセンサー(またはカメラ)が目標物を捉えたときの水平角 から、正弦定理を用いて目標物までの距離と2次元座標 を算出する。
1// 三角測量(Triangulation)による目標の相対座標算出2interface Point2D {3 x: number;4 y: number;5 distanceFromA: number;6}78function triangulate(9 baselineLength: number, // 観測点AとBの間の距離10 angleADeg: number, // 点Aから見た目標の角度 (度)11 angleBDeg: number // 点Bから見た目標の角度 (度)12): Point2D {13 const radA = (angleADeg * Math.PI) / 180;14 const radB = (angleBDeg * Math.PI) / 180;1516 // 三角形の内角の和 = 180度より、目標点Pの頂角 gamma17 const radP = Math.PI - (radA + radB);18 if (radP <= 0.001) {19 throw new Error("平行または交差しない角度です");20 }2122 // 正弦定理: distanceAP / sin(B) = baselineLength / sin(P)23 const distAP = (baselineLength * Math.sin(radB)) / Math.sin(radP);2425 // 点Aを原点 (0, 0) としたときの目標点Pの直交座標26 const targetX = distAP * Math.cos(radA);27 const targetY = distAP * Math.sin(radA);2829 return {30 x: targetX,31 y: targetY,32 distanceFromA: distAP,33 };34}3536// 例: 基線長 100m, 点Aからの仰角 45°, 点Bからの仰角 60°37const target = triangulate(100, 45, 60);38console.log(`目標点座標: (X: ${target.x.toFixed(1)}m, Y: ${target.y.toFixed(1)}m)`);39console.log(`点Aからの距離: ${target.distanceFromA.toFixed(1)}m`);
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元