articles:atan2

atan2

一般に正接関数($x=\mathrm{tan}\,\theta$)の逆関数($\theta=\mathrm{tan}^{-1}x$)は値域を$(-\pi/2,\pi/2)$としている.

図 atan2の役割

たとえば, $$ \mathrm{tan}(\pi/4)=1 $$ であり, $$ \mathrm{tan}^{-1}(1)=\pi/4 $$ である.

しかし,これだとx,yの座標値でx軸からの回転角度を出すときに$\mathrm{tan}^{-1}(y/x)$としたのでは 図の斜線部(第2象限,第3象限)の角度を出すことが出来ない.

これを可能にするのが$\mathrm{atan2}$関数であり,多くのプログラミング言語のライブラリに組み込まれている. その定義は各象限,$\pi/2$,$-\pi/2$で場合分けされて以下のようになっている.

$$ \theta = \mathrm{atan2}(y,x) = \left\{ \begin{array}{cc} \mathrm{tan}^{-1}(y/x)-\pi & (x<0, \, y<0) \\ -\pi/2 & (x=0,\, y<0) \\ \mathrm{tan}^{-1}(y/x) & (x>0) \\ \pi/2 & (x=0,\, y>0) \\ \mathrm{tan}^{-1}(y/x)+\pi & (x<0 \, y \ge 0) \\ \mathrm{unknown} & (x=0, \, y=0) \end{array} \right. $$ pythonなど多くのプログラミング言語ライブラリでは$\mathrm{atan2}(0,0)$をunknownとせずに0.0としている.

  • articles/atan2.txt
  • 最終更新: 2024/09/03 12:38
  • by Takashi Suehiro