複素数 — 回転と拡大
複素数 z = x + iy を平面の点だと思うと、z を掛けるのは回転と拡大を一度にやる操作になる。z → z² は各点の偏角を倍にし、原点からの距離を二乗する。
正方格子を z² に通すと、直交していた縦横の線が原点のまわりで角を倍に開かれて、放物線のように曲がる。それでも線と線の交わる角は直角のまま残る。
複素数の掛け算 z·w は、偏角どうしを足し、絶対値どうしを掛ける。だから z を掛けることが「回す+伸ばす」の同時操作になる。z² は正則関数(複素微分可能)で、正則関数は局所で見ると回転と拡大しか起こさないため、微小な交差角を保つ。角度を保つ写像が等角写像(conformal map)。z² のほか exp(z)、(az+b)/(cz+d) のメビウス変換も等角で、地図投影(メルカトル図法は exp 系)や流体の翼まわりの流れの解析(Joukowski 変換)に使われる。
下は正方格子の縦線と横線をそれぞれ z² に通して引いている。plot の二行が z² そのもので、re² - im² と 2·re·im は複素数の掛け算を実部と虚部に分けて書いただけ。j を 0 から steps まで動かして一本の線を細かく刻み、各点を z² で写してから繋ぐ。
格子を曲げているのに、交点の直角は崩れない。plot の中身を re² - im² / 2·re·im から、exp(z) の eʳᵉ·cos(im) / eʳᵉ·sin(im) に差し替えると、縦横の格子が同心円と放射状の線に開く。メビウス変換に替えるとまた別の曲げ方になり、どれも直交を直交のまま曲げる。
z²・指数・メビウス変換を毎フレーム切り替えながら格子を曲げている。