物理シミュレーション、統計処理、あるいはゲーム開発におけるキャラクターの移動制御など、プログラミングにおいて三角関数(サイン、コサイン、タンジェント)が必要になる場面は多々あります。
Pythonの標準ライブラリ math モジュールを使用すれば、これらの計算を簡単に行うことができます。ただし、引数として渡す角度の単位には注意が必要です。
この記事では、三角関数の基本的な使い方と、度数法(度)と弧度法(ラジアン)の変換方法について解説します。
三角関数の基本関数
math モジュールには、以下の3つの主要な関数が用意されています。
math.sin(x): 正弦(サイン)を返します。math.cos(x): 余弦(コサイン)を返します。math.tan(x): 正接(タンジェント)を返します。
【重要】引数は「ラジアン」で指定する
これらの関数に渡す引数 x は、日常的に使う「度(degree, °)」ではなく、**「ラジアン(radian)」**でなければなりません。
- 180度 = $\pi$ ラジアン
- 360度 = $2\pi$ ラジアン
もし「30度」や「45度」といった値を使って計算したい場合は、事前にラジアンに変換する必要があります。
度(Degree)とラジアン(Radian)の変換
数式を使って $\times \pi / 180$ と計算することもできますが、math モジュールには変換専用の関数が用意されています。
math.radians(度): 度をラジアンに変換します。math.degrees(ラジアン): ラジアンを度に変換します。
実践的なコード例
1. 角度(度)を指定して三角関数を計算する
例として、角度が60度の場合のサイン、コサイン、タンジェントを計算します。
import math
# 角度(度数法)
angle_in_degrees = 60
# 度をラジアンに変換
angle_in_radians = math.radians(angle_in_degrees)
print(f"角度: {angle_in_degrees}度 ({angle_in_radians:.4f} rad)")
# 三角関数の計算
val_sin = math.sin(angle_in_radians)
val_cos = math.cos(angle_in_radians)
val_tan = math.tan(angle_in_radians)
print(f"sin(60°): {val_sin:.4f}")
print(f"cos(60°): {val_cos:.4f}")
print(f"tan(60°): {val_tan:.4f}")
実行結果:
角度: 60度 (1.0472 rad)
sin(60°): 0.8660
cos(60°): 0.5000
tan(60°): 1.7321
$\sin(60^\circ) = \sqrt{3}/2 \approx 0.866$、$\cos(60^\circ) = 1/2 = 0.5$ なので、正しく計算されていることがわかります。
2. 応用:直角三角形の辺の長さを求める
三角関数を使うと、角度と1つの辺の長さから、他の辺の長さを求めることができます。
例:ある地点から木を見上げたときの角度(仰角)が30度で、木までの距離が10メートルの場合、木の高さはいくつか?
(高さ = 距離 $\times \tan(\theta)$)
import math
# 木までの距離 (メートル)
distance = 10.0
# 見上げた角度 (度)
elevation_angle = 30.0
# 角度をラジアンに変換
theta = math.radians(elevation_angle)
# 高さを計算 (tanを使用)
tree_height = distance * math.tan(theta)
print(f"距離: {distance}m, 角度: {elevation_angle}度")
print(f"木の高さ: {tree_height:.2f}m")
実行結果:
距離: 10.0m, 角度: 30.0度
木の高さ: 5.77m
まとめ
- Pythonで三角関数を使うには
import mathが必要です。 math.sin(),math.cos(),math.tan()を使用します。- 引数はラジアンで指定する必要があります。
- 度数法(度)を使う場合は、
math.radians()で変換してから渡します。
