三角関数をプログラムで使うときに参照したい情報

三角関数を使うプログラムを書くときに参考になる情報をまとめました。値を確認できる三角関数のグラフ、三角関数の特殊な値の一覧と不具合を回避する方法、シェーダーの定数として使える値の一覧があります。

三角関数のグラフ

  • グラフ上部の凡例をクリックして項目の表示切替
  • マウスをグラフに合わせて値を表示

三角関数の値

三角関数が特定の値になる条件を把握しておくと、不要な処理を省けたり潜在的な不具合に気付けたりします。

ここで扱う三角関数の角度の範囲は π-\piπ\pi ラジアンです。

値が 0 になるもの

次の値は 0 です:

  • sin0,sinπ,sin(π)\sin 0, \quad \sin \pi, \quad \sin (-\pi)
  • cosπ2,cos(π2)\cos \frac{\pi}{2}, \quad \cos (-\frac{\pi}{2})
  • tan0,tanπ,tan(π)\tan 0, \quad \tan \pi, \quad \tan (-\pi)

この条件を満たす可能性のある計算で値を除数に使うときは、ゼロ除算を防ぐために条件分岐して専用の処理を書きます。

値が ±1 になるもの

次の値は 1 です:

  • sinπ2\sin \frac{\pi}{2}
  • cos0\cos 0
  • tanπ4,tan(3π4)\tan \frac{\pi}{4}, \quad \tan (-\frac{3\pi}{4})

次の値は -1 です:

  • sin(π2)\sin (-\frac{\pi}{2})
  • cosπ,cos(π)\cos \pi, \quad \cos(-\pi)
  • tan3π4,tan(π4)\tan \frac{3\pi}{4}, \quad \tan (-\frac{\pi}{4})

値が存在しないもの

次の値は存在しません:

  • tanπ2,tan(π2)\tan \frac{\pi}{2}, \quad \tan (-\frac{\pi}{2})

この条件を満たす可能性のある計算では、条件分岐して専用の処理を書きます。分岐条件には、下記を考慮して一定の幅を持たせます。

プログラムでは、角度が ±π2\pm \frac{\pi}{2} に非常に近いときにもタンジェントの値が得られない場合があります。 これは、角度が ±π2\pm \frac{\pi}{2} に近づくほどタンジェントの値が ±\pm\infty に近づき、変数の限界値を超えたところでオーバーフローが発生するためです。 また、結果が得られたとしても、角度が ±π2\pm \frac{\pi}{2} に近いとタンジェントの値の絶対値が非常に大きくなります。 これは、後続の計算によってはオーバーフローや浮動小数点誤差の原因になります。

定数

通常はライブラリで定義されている定数を使えばいいのですが、シェーダーなどでは自身で定義が必要なことがあります。 そういうときのための一覧です。

意味定数名の例
円周率(π)PI3.14159265358979323846
度数をラジアンに変換する係数DEG2RAD(PI/180)
ラジアンを度数に変換する係数RAD2DEG(180/PI)