見出し画像

高校数学をプログラミングで解く(数学I編)「2-1 三角比」


はじめに

今回は、数学Iで学ぶ「三角比」について、プログラミング言語Processingでの三角比の利用方法を説明し、三角比を利用して直角三角形を描くプログラムを作成します。

三角比

まず、三角比の定義を見ておきます。

図1 三角比の定義

図1のように、直角三角形の斜辺の長さを$${r}$$、横方向の辺の長さを$${x}$$、縦方向の辺の長さを$${y}$$、1つの角の大きさを$${\theta}$$とおくと、三角比は

$$
\sin \theta = \frac{y}{r}, \ \cos \theta = \frac{x}{r}, \ \tan \theta = \frac{y}{x}
$$

で表されます。また、

$$
y=r \sin \theta, \ x=r \cos \theta, \ y=x \tan \theta
$$

と表すこともできます。

よく利用される三角比

よく利用される三角比の値について、まとめておきます。

$$
\sin 30^{\circ} = \frac{1}{2}, \ \cos 30^{\circ} = \frac{\sqrt{3}}{2}, \ \tan 30^{\circ} = \frac{1}{\sqrt{3}}
$$

$$
\sin 45^{\circ} = \frac{1}{\sqrt{2}}, \ \cos 45^{\circ} = \frac{1}{\sqrt{2}}, \ \tan 45^{\circ} = 1
$$

$$
\sin 60^{\circ} = \frac{\sqrt{3}}{2}, \ \cos 60^{\circ} = \frac{1}{2}, \ \tan 60^{\circ} = \sqrt{3}
$$

プログラムで三角比を扱う

プログラミング言語「Processing」では、基本的な関数としてsin関数、cos関数、tan関数が用意されています。

sin(angle);
cos(angle);
tan(angle);

angle:角度(ラジアン) float型

これらの関数を利用するときは、1点注意が必要です。引数のangleは度数法(°)ではなく、弧度法(ラジアン)で設定する必要があります。

たとえば、$${\sin 30^{\circ}}$$を計算してみます。

// 三角比のテスト
void setup(){
  println( sin(30.0) );
}

ソースコード1 $${\sin 30^{\circ}}$$の計算

このソースコードを、Processingの開発環境ウィンドウを開いて(スケッチ名を「trigonometric_ratio」としています)、テキストエディタ部分に書いて実行すると、図1のように、$${\sin 30^{\circ}}$$の結果をコンソールに出力します。

図1 スケッチ「trigonometric_ratio」の実行結果(誤)

結果を見ると、「0.5」と出力されるはずが、「-0.9880316」と出力されています。

これは、sin関数の引数に「弧度法(ラジアン)」での値ではなく、「度数法(°)」での値「30°」を設定したから起こったことです。では、「30°」を「度数法」から「弧度法」の値に変換して、sin関数の引数に渡してみます。「度数法」から「弧度法」の値への変換には、radians関数を利用します。

radians(angle)

angle:角度(°) float型
返り値:角度(ラジアン) float型

// 三角比のテスト
void setup(){
  println( sin(radians(30.0)) );
}

ソースコード2 $${\sin 30^{\circ}}$$の計算(弧度法(ラジアン)に変換)

このソースコードを、Processingの開発環境ウィンドウを開いて(スケッチ名を「trigonometric_ratio_radians」としています)、テキストエディタ部分に書いて実行すると、図2のように、今度は$${\sin 30^{\circ}}$$の正しい結果「0.5」をコンソールに出力します。

図2 スケッチ「trigonometric_ratio_radians」の実行結果(正)

最後に、よく利用される三角比の値をコンソールに出力してみます。

// 三角比のテスト
void setup(){
  println( sin(radians(30.0)), cos(radians(30.0)), tan(radians(30.0)) );
  println( sin(radians(45.0)), cos(radians(45.0)), tan(radians(45.0)) );
  println( sin(radians(60.0)), cos(radians(60.0)), tan(radians(60.0)) );
}

ソースコード3 よく利用される三角比の値の計算

このソースコードを、スケッチ「trigonometric_ratio_radians」の「trigonometric_ratio_radians」タブのテキストエディタ部分に書いて実行すると、図3のように、よく利用される三角比の値を丸め誤差の範囲で正しくコンソールに出力します。

図3 よく利用される三角比の計算結果

三角比を利用して直角三角形を描く

三角比を利用して図4のような直角三角形ABCを描くプログラムを作成してみます。

図4 直角三角形ABC

一般に、直角三角形はその斜辺の長さと1つの鋭角の大きさを決めることで一意に決定されます。つまり、斜辺の長さと1つの鋭角の大きさが分かれば、その直角三角形を描くことができます。

アルゴリズム設計

斜辺ABの長さを$${r}$$、1つの鋭角∠Aの大きさを$${\theta}$$とします。また、辺ACの長さを$${x}$$、辺BCの長さを$${y}$$とします。このとき、三角比を利用すると、
$$
x= r \cos \theta, \ y= r \sin \theta
$$
となり、$${x}$$と$${y}$$は斜辺の長さ$${r}$$と1つの鋭角の大きさ$${\theta}$$で表すことができます。

この直角三角形を描くために、triangle関数を利用します。triangle関数の詳細は『高校数学をプログラミングで解く(準備編)「2-1 Processingで図形を描く」』をご覧ください。

triangle(x1, y1, x2, y2, x3, y3);

このtriangle関数の引数は三角形の3つの頂点の座標になります。そこで、直角三角形ABCに対して、図5のように座標系を設定します。

図5 座標系の設定

その結果、頂点Aの座標は$${(0,0)}$$、頂点Bの座標は$${(x,y)}$$、頂点Cの座標は$${(x,0)}$$と置くことができます。

直角三角形ABCを描くプログラム

それでは、直角三角形ABCを描くプログラムを作成します。斜辺の長さ$${r}$$と1つの鋭角の大きさ$${\theta}$$を

$$
r=200, \ \theta = 30^{\circ}
$$

と設定しています。

// 直角三角形ABCを描く
void setup(){
  size(500, 500); // キャンバスの大きさを指定する
  translate(width/2, height/2); // 座標の中心をキャンバスの中心に移動する
  scale(1,-1); // y軸正の向きを下向きから上向きに反転する
  background(255,255,255); // 背景を白色にする
  noFill(); // 図形の塗りつぶしなし
  noLoop(); // 繰り返し処理をしない
  
  // 斜辺ABの長さrと1つの鋭角Aの大きさtheta
  float r = 200.0;
  float theta = 30.0;
  
  // 辺AC, BCの長さx, y
  float x = r * cos(radians(theta));
  float y = r * sin(radians(theta));
  
  // 直角三角形ABCの各頂点の座標
  float A_x = 0.0;
  float A_y = 0.0;
  float B_x = x;
  float B_y = y;
  float C_x = x;
  float C_y = 0.0;
  
  // 直角三角形ABCを描く
  triangle(A_x, A_y, B_x, B_y, C_x, C_y);
}

ソースコード4 直角三角形を描くプログラム

なお、キャンバスの座標系については『高校数学をプログラミングで解く(数学A編)「2-0 高校数学に適した座標系の準備」』で紹介した座標系を利用しています。

ソースコード4を、Processingの開発環境ウィンドウを開いて(スケッチ名を「drawRightTriangle」としています)、テキストエディタ部分に書いて実行すると、図6のように、実行ウィンドウのキャンバスに直角三角形を描きます。

図6 直角三角形の描画

まとめ

今回は、数学Iで学ぶ「三角比」について、プログラミング言語Processingでの三角比の利用を説明し、三角比を利用して直角三角形を描くプログラムを作成しました。
三角比はほとんどのプログラミング言語でその関数が定義されており、図形を描くプログラムなどでよく出てくるものです。三角比を使いこなせると、プログラミングの幅も広がっていきます。ぜひ少しずつ慣れていってください。

参考文献

改訂版 教科書傍用 スタンダード 数学I(数研出版、ISBN9784410209178)

この記事が気に入ったらサポートをしてみませんか?