【C++】sin, cos で三角関数(正弦・余弦)を計算する方法

目次

はじめに

C++でグラフィックス処理や物理シミュレーション、その他様々な科学技術計算を行う際、三角関数は不可欠なツールです。標準ライブラリの <cmath> (C言語では <math.h>) ヘッダーには、主要な三角関数が用意されており、簡単に利用することができます。

この記事では、その中でも最も基本的な正弦 (sin)余弦 (cos) を計算する関数の使い方と、角度の単位(ラジアン)に関する重要な注意点について解説します。


sin / cos を使ったサンプルコード

このコードは、0度から180度まで、30度刻みで sincos の値を計算し、その結果を整形して出力します。

完成コード

#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>ライブラリを使って、sincosを計算する方法を解説しました。

  • <cmath> ヘッダーをインクルードする。
  • C++の三角関数が受け取る角度の単位はラジアンである。
  • 日常的な「」で計算したい場合は、度 * PI / 180.0 の公式でラジアンに変換してから関数に渡す必要がある。

この「度→ラジアン変換」は、三角関数を扱う上での必須の知識ですので、しっかりと覚えておきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次