はじめに
C++でグラフィックス処理や物理シミュレーション、その他様々な科学技術計算を行う際、三角関数は不可欠なツールです。標準ライブラリの <cmath>
(C言語では <math.h>
) ヘッダーには、主要な三角関数が用意されており、簡単に利用することができます。
この記事では、その中でも最も基本的な正弦 (sin
) と余弦 (cos
) を計算する関数の使い方と、角度の単位(ラジアン)に関する重要な注意点について解説します。
sin
/ cos
を使ったサンプルコード
このコードは、0度から180度まで、30度刻みで sin
と cos
の値を計算し、その結果を整形して出力します。
完成コード
#include <iostream>
#include <cmath> // sin, cos 関数を使うために必要
#include <iomanip> // 出力整形 (setw, setprecision, fixed)
using namespace std;
// 円周率πを定義 (C++20では <numbers> ヘッダーの std::numbers::pi が使える)
const double PI = 3.141592653589793;
int main() {
cout << "角度\t sin(θ)\t cos(θ)" << endl;
cout << "---------------------------------" << endl;
// 出力書式を設定: 小数点以下4桁の固定小数点表示
cout << fixed << setprecision(4);
// 0度から180度まで、30度ずつループ
for (int degree = 0; degree <= 180; degree += 30) {
// 1. 度をラジアンに変換
double radian = degree * PI / 180.0;
// 2. sin, cos関数にラジアンを渡して計算
double sin_val = sin(radian);
double cos_val = cos(radian);
cout << setw(3) << degree << "°\t "
<< setw(7) << sin_val << "\t "
<< setw(7) << cos_val << endl;
}
return 0;
}
コードの解説
【重要】角度の単位は「ラジアン」
C++の sin
, cos
などの三角関数が引数として受け取る角度の単位は、私たちが日常的に使う「度 (degree)」ではなく、「ラジアン (radian)」です。
そのため、sin(30)
のように直接「度」を渡しても、期待する 0.5
という結果は得られません。30度
をsin
関数で計算したい場合は、まずそれをラジアンに変換する必要があります。
1. 度からラジアンへの変換
double radian = degree * PI / 180.0;
度からラジアンへの変換は、以下の公式で行います。 ラジアン = 度 × (円周率π / 180)
このコードでは、degree
変数に格納された「度」を、この公式を使ってラジアンに変換しています。
2. sin(radian)
/ cos(radian)
sin(x)
: 引数x
(ラジアン単位) の正弦 (sine) の値をdouble
型で返します。cos(x)
: 引数x
(ラジアン単位) の余弦 (cosine) の値をdouble
型で返します。
変換した radian
の値をこれらの関数に渡すことで、正しい計算結果を得ることができます。
まとめ
今回は、C++の<cmath>
ライブラリを使って、sin
とcos
を計算する方法を解説しました。
<cmath>
ヘッダーをインクルードする。- C++の三角関数が受け取る角度の単位はラジアンである。
- 日常的な「度」で計算したい場合は、
度 * PI / 180.0
の公式でラジアンに変換してから関数に渡す必要がある。
この「度→ラジアン変換」は、三角関数を扱う上での必須の知識ですので、しっかりと覚えておきましょう。