#04 ふれてみよう高校数学 関数

三角関数の定義——単位円

単位円による三角関数の定義

建物の高さや山の標高を測るとき、角度を使いますよね。「傾き30度の坂を100m進んだら高さはどのくらい?」——これを計算するのが三角関数です。

でも、直角三角形だけで考えると「90度より大きい角」は扱えません。たとえば、時計の針が12時を過ぎてさらに回った場合、その「角度」に対応するsinやcosはどうなる?——そこで登場するのが単位円を使った定義です。

半径1の円(単位円)の上に点 P\mathrm{P} があるとします。原点(中心)から点 P\mathrm{P} への方向と、右向きの軸とのなす角を θ\theta としたとき:

cosθ=x 座標,sinθ=y 座標\boxed{\cos\theta = x\text{ 座標},\quad \sin\theta = y\text{ 座標}} tanθ=sinθcosθ(cosθ0)\tan\theta = \frac{\sin\theta}{\cos\theta} \quad (\cos\theta \neq 0)

つまり「cosは横方向の成分、sinは縦方向の成分」——これだけ覚えておけば、どんな角度にも対応できます。この定義のおかげで、θ\theta鋭角だけでなく、任意の角度(負の角・180°180° 以上の角)にも対応しています。


4つの象限と符号

単位円を4等分したエリアを「象限」と言います。時計の反対回りに第1〜第4象限と呼びます。「右上が第1、左上が第2、左下が第3、右下が第4」——地図の4方向のようなイメージです。

各エリアでcosとsinの符号(プラス・マイナス)が決まります。cos は「横方向(x座標)」なので右半分でプラス、sin は「縦方向(y座標)」なので上半分でプラスです。

象限θ\theta の範囲sin\sincos\costan\tan
第1象限0°90°0° \sim 90°++++++
第2象限90°180°90° \sim 180°++--
第3象限180°270°180° \sim 270°--++
第4象限270°360°270° \sim 360°-++-

覚え方:「す・た・つ・き(すべて・たんじぇんと・つかい・きょうは)」など


インタラクティブデモ:単位円アニメーション

P\mathrm{P} が単位円上を回転します。青い線は cosθ\cos\thetaxx 軸への射影)、赤い線は sinθ\sin\thetayy 軸への射影)を表しています。マウスを左右に動かすと角度が変わります。右パネルの数値がリアルタイムで変わるのを確認してください——第2象限(90〜180°)に入るとcosがマイナスになるのがよくわかります。

マウスを左右に動かすと角度 θ が変わります
function loop() {
ctx.clearRect(0, 0, W, H);

var cx = W / 2 - 60, cy = H / 2 + 10;
var r = 120;
var theta = (mx / W) * Math.PI * 2;
var cosT = Math.cos(theta), sinT = Math.sin(theta);
var px = cx + r * cosT, py = cy - r * sinT;

// Quadrant shading
var qColor = ['rgba(79,195,247,0.08)', 'rgba(129,199,132,0.08)', 'rgba(239,83,80,0.08)', 'rgba(255,183,77,0.08)'];
for (var qi = 0; qi < 4; qi++) {
  var qa = qi * Math.PI / 2;
  ctx.fillStyle = qColor[qi];
  ctx.beginPath();
  ctx.moveTo(cx, cy);
  ctx.arc(cx, cy, r + 20, -qa, -qa - Math.PI / 2, true);
  ctx.closePath();
  ctx.fill();
}

// Grid
ctx.strokeStyle = 'rgba(255,255,255,0.08)';
ctx.lineWidth = 1;
for (var gi = -3; gi <= 3; gi++) {
  ctx.beginPath(); ctx.moveTo(cx + gi * 40, cy - 180); ctx.lineTo(cx + gi * 40, cy + 180); ctx.stroke();
  ctx.beginPath(); ctx.moveTo(cx - 160, cy + gi * 40); ctx.lineTo(cx + 160, cy + gi * 40); ctx.stroke();
}

// Unit circle
ctx.strokeStyle = 'rgba(255,255,255,0.25)';
ctx.lineWidth = 1.5;
ctx.beginPath(); ctx.arc(cx, cy, r, 0, Math.PI * 2); ctx.stroke();

// Axes
ctx.strokeStyle = 'rgba(255,255,255,0.35)';
ctx.lineWidth = 1.5;
ctx.beginPath(); ctx.moveTo(cx - 160, cy); ctx.lineTo(cx + 160, cy); ctx.stroke();
ctx.beginPath(); ctx.moveTo(cx, cy - 160); ctx.lineTo(cx, cy + 160); ctx.stroke();

// Axis labels
ctx.fillStyle = 'rgba(255,255,255,0.5)';
ctx.font = '12px sans-serif';
ctx.fillText('1', cx + r - 6, cy + 16);
ctx.fillText('-1', cx - r - 16, cy + 16);
ctx.fillText('1', cx + 4, cy - r + 4);
ctx.fillText('-1', cx + 4, cy + r + 12);

// Arc for theta
ctx.strokeStyle = 'rgba(255,235,59,0.6)';
ctx.lineWidth = 2;
ctx.beginPath();
ctx.arc(cx, cy, 28, 0, -theta, theta < 0);
ctx.stroke();
ctx.fillStyle = '#ffeb3b';
ctx.font = '14px sans-serif';
ctx.fillText('θ', cx + 32, cy - 6);

// cos segment (x-projection) - blue
ctx.strokeStyle = '#4fc3f7';
ctx.lineWidth = 3;
ctx.beginPath(); ctx.moveTo(cx, cy); ctx.lineTo(px, cy); ctx.stroke();
// label
ctx.fillStyle = '#4fc3f7';
ctx.font = 'bold 12px sans-serif';
ctx.fillText('cosθ = ' + cosT.toFixed(3), cx + (cosT > 0 ? 4 : -80), cy + 18);

// sin segment (y-projection) - red
ctx.strokeStyle = '#ef5350';
ctx.lineWidth = 3;
ctx.beginPath(); ctx.moveTo(px, cy); ctx.lineTo(px, py); ctx.stroke();
ctx.fillStyle = '#ef5350';
ctx.font = 'bold 12px sans-serif';
var sinLabelX = cosT > 0 ? px + 6 : px - 70;
ctx.fillText('sinθ = ' + sinT.toFixed(3), sinLabelX, cy - (sinT * r) / 2);

// Radius line
ctx.strokeStyle = 'rgba(255,255,255,0.7)';
ctx.lineWidth = 2;
ctx.beginPath(); ctx.moveTo(cx, cy); ctx.lineTo(px, py); ctx.stroke();

// Point P
ctx.fillStyle = '#ffeb3b';
ctx.beginPath(); ctx.arc(px, py, 7, 0, Math.PI * 2); ctx.fill();
ctx.strokeStyle = '#fff';
ctx.lineWidth = 1.5;
ctx.beginPath(); ctx.arc(px, py, 7, 0, Math.PI * 2); ctx.stroke();
ctx.fillStyle = '#fff';
ctx.font = 'bold 13px sans-serif';
ctx.fillText('P', px + 9, py - 6);

// Dashed projection lines
ctx.strokeStyle = 'rgba(255,255,255,0.2)';
ctx.lineWidth = 1;
ctx.setLineDash([4, 4]);
ctx.beginPath(); ctx.moveTo(px, py); ctx.lineTo(px, cy); ctx.stroke();
ctx.beginPath(); ctx.moveTo(px, py); ctx.lineTo(cx, py); ctx.stroke();
ctx.setLineDash([]);

// Info panel
var deg = (theta * 180 / Math.PI % 360 + 360) % 360;
var tanT = Math.abs(cosT) > 0.01 ? (sinT / cosT).toFixed(3) : '±∞';
ctx.fillStyle = 'rgba(0,0,0,0.65)';
ctx.beginPath(); ctx.roundRect(W - 180, 10, 168, 100, 8); ctx.fill();
ctx.fillStyle = '#ffeb3b';
ctx.font = 'bold 14px monospace';
ctx.fillText('θ = ' + deg.toFixed(1) + '°', W - 168, 34);
ctx.fillStyle = '#4fc3f7';
ctx.font = '13px monospace';
ctx.fillText('cos = ' + cosT.toFixed(3), W - 168, 56);
ctx.fillStyle = '#ef5350';
ctx.fillText('sin = ' + sinT.toFixed(3), W - 168, 74);
ctx.fillStyle = '#a5d6a7';
ctx.fillText('tan = ' + tanT, W - 168, 92);

// Quadrant label
var qNum = theta >= 0 && theta < Math.PI/2 ? 'Ⅰ' : theta < Math.PI ? 'Ⅱ' : theta < 3*Math.PI/2 ? 'Ⅲ' : 'Ⅳ';
ctx.fillStyle = 'rgba(255,255,255,0.6)';
ctx.font = '12px sans-serif';
ctx.fillText('第' + qNum + '象限', W - 168, 108);

requestAnimationFrame(loop);
}
loop();

特殊角の三角比

「30°、45°、60°」——この3つは特によく使う角度です。試験や計算で何度も登場するので、値を覚えておくと便利です。

覚え方のコツ:sin\sin の値は 0° から 90°90° にかけて「0,12,22,32,10, \frac{1}{2}, \frac{\sqrt{2}}{2}, \frac{\sqrt{3}}{2}, 1」と増えていきます。分子を 0,1,2,3,4\sqrt{0}, \sqrt{1}, \sqrt{2}, \sqrt{3}, \sqrt{4} と思うと規則的——「ルートの中が0から4まで増える」と覚えれば一気に覚えられます。

θ\theta0°30°30°45°45°60°60°90°90°
sinθ\sin\theta0012\dfrac{1}{2}22\dfrac{\sqrt{2}}{2}32\dfrac{\sqrt{3}}{2}11
cosθ\cos\theta1132\dfrac{\sqrt{3}}{2}22\dfrac{\sqrt{2}}{2}12\dfrac{1}{2}00
tanθ\tan\theta0013\dfrac{1}{\sqrt{3}}113\sqrt{3}未定義

cos\cossin\sin の逆順——「sinが増えるとcosが減る」というシーソーのような関係です。


三角関数の基本関係式

単位円の定義から、以下の関係式が常に成り立ちます。これらは「覚える」ものではなく、「単位円から導ける」ものです。

sin2θ+cos2θ=1\sin^2\theta + \cos^2\theta = 1

これはピタゴラスの定理そのもの——単位円上の点の座標を (x,y)(x, y) とすると、x2+y2=12=1x^2 + y^2 = 1^2 = 1x=cosθx = \cos\thetay=sinθy = \sin\theta なので自動的に成り立ちます。「三平方の定理が変装しているだけ」と思えば納得できます。

tanθ=sinθcosθ\tan\theta = \frac{\sin\theta}{\cos\theta} 1+tan2θ=1cos2θ1 + \tan^2\theta = \frac{1}{\cos^2\theta}

これも上の sin2θ+cos2θ=1\sin^2\theta + \cos^2\theta = 1cos2θ\cos^2\theta で割るだけで導けます——「式変形で生み出せるもの」です。


練習問題

  1. sin120°\sin 120°cos120°\cos 120°tan120°\tan 120° を求めよ。
  2. sin275°+cos275°\sin^2 75° + \cos^2 75° の値を求めよ。
  3. tanθ=3\tan\theta = \sqrt{3} かつ 0°<θ<180°0° < \theta < 180° のとき、θ\theta を求めよ。

解答

  1. sin120°=32\sin 120° = \frac{\sqrt{3}}{2}cos120°=12\cos 120° = -\frac{1}{2}tan120°=3\tan 120° = -\sqrt{3}
  2. =1= 1sin2θ+cos2θ=1\sin^2\theta + \cos^2\theta = 1 の恒等式)
  3. θ=60°\theta = 60°(第1象限で tan60°=3\tan 60° = \sqrt{3}

まとめ

  • 単位円上の点 P\mathrm{P} の座標が (cosθ,sinθ)(\cos\theta, \sin\theta)——「横がcos、縦がsin」
  • tanθ=sinθ/cosθ\tan\theta = \sin\theta / \cos\theta——「縦÷横の比率」
  • sin2θ+cos2θ=1\sin^2\theta + \cos^2\theta = 1——「ピタゴラスの定理の別の顔」
  • 象限によって各三角関数の符号が決まる——「右半分でcosプラス、上半分でsinプラス」

次回は三角関数のグラフを学びます。sinやcosが描く「波形」は、音や光の現象を記述するための基本パターンになっています。