輪郭をなぞるだけのブログ

浅学菲才のためにおそらく嘘も多い

複素平面上の回転移動

いつも忘れるのでメモ。

複素平面上の回転は複素数の積で表せる。
\theta 回転させたいとき、回転させたい座標に偏角 \theta の単位ベクトルをかければよい。
C++ だと complex クラスを使えば簡単に記述できる。
( 極形式 (r, \theta)複素数表記は polar で取得できる。)

複素平面を勉強したことがないので、回転行列使えばいいかという気もする。

コード

template<typename T>
complex<T> rotate_radian(complex<T> z, T radian){
    return z * polar(1.0, radian);
}

template<typename T>
complex<T> rotate_degree(complex<T> z, T degree){
    // 1 degree = pi / 180.0
    return z * polar(1.0, degree * acos(-1) / 180.0);
}

雑記

生きてる価値がない上に、水色に落ちて虚無が加速した。
どうしてこうなった。
雑記部分は多分いずれ消す。