【数学】ゲーム開発で覚えておくべき三角関数の性質

ゲーム開発に必要な三角関数の知識をまとめてみました。
基礎的な内容が多いですが一応。

暗記すること

次の図で説明します。

f:id:halya_11:20180722232417p:plain:w400

上図において、次の式が成立します。

{ \displaystyle
x=rcos \theta
}
{ \displaystyle
y=rsin \theta
}
{ \displaystyle
 \frac{y}{x} =tan \theta
}

三角関数で暗記が必要な項目はこの3つだけです。

 { tan } { sin } { cos }の関係

{ tan \theta }{ sin \theta }{ cos \theta } の関係は、前節の式から導けます。

{ \displaystyle
tan \theta = \frac{y}{x} = \frac{rsin  \theta}{rcos \theta} = \frac{sin \theta}{cos \theta}
}

つまり、

{ \displaystyle
tan \theta = \frac{sin \theta}{cos \theta}
}

となります。

逆関数  { asin() } { acos() } { atan() }

まず、上記の内容から次の式は自明です。

{ \displaystyle
 sin \theta = \frac{y}{r}
 }

ここで { sin }逆関数 { asin }とすると、

{ \displaystyle
 \theta = asin  \big( \frac{y}{r} \big)
 }

となります。

算術演算クラスには大抵 { asin } { acos } { atan }が存在するので、これらを用いて逆関数の計算をすることができます。

角度を求める時に便利な { atan2() }

前節の { atan } を使うと、 { x }座標と { y }座標から角度を求められるので便利です。

 { \displaystyle
 \theta = atan \big( \frac{y}{x} \big)
 }

ただし上記の関数は、

  •  { x = 1, y = 1 }(第一象限)と { x = -1, y = -1 }(第三象限)との区別がつかない
  • xが0だとゼロ除算になるので判定が必要になる

というように使いづらいです。

そこで登場するのが  {atan2(y, x)} という関数です。
これは上述の二つの問題点を吸収する関数で、第一引数に {y}、第二引数に {x}を与えることで角度を得ることができます。