$w = (z-i)/(z+i)$
## conformal mapping g(z) = (z -i)/(z+i ) def h(z): return (z - 1j)/(z + 1j) for x_i in x_m: z_h = x_i*np.ones(m) + y*1j plt.plot(np.real(h(z_h)),np.imag(h(z_h)),color='black') for y_i in y_m: z_v = x+y_i*np.ones(m)*1j plt.plot(np.real(h(z_v)),np.imag(h(z_v)),color='black', linestyle='dashed') plt.gca().set_aspect('equal', adjustable='box') sc = 1.1/s plt.xlim(-s*sc,s*sc) plt.ylim(-s*sc,s*sc)
実はこの写像は半平面Im$z > 0$を単位円に写します.
いずれの場合も
破線と実線とが直交するように変換されていることに注目です!
Schwarz- Christoffel 変換
上の数式やコードなどを通して,微少部分で角度が保存されていることが確認できたと思います. それでは次に,この写像を目的を持って構成しましょう. 目的とは,長方形から円へと写すことです.
これが出来れば,画像のように長方形のものを,円に等角に写すことができ,非常に興味深い絵が得られます.
この写像を実現するのがSchwarz-Christoffel 写像 と呼ばれるものです.
半平面から多角形に変換する写像は,以下のように記述されます.
Schwarz-Christoffel 変換
$w$平面上の多角形に関して,その各頂点の内角を順番に $\alpha_1 \pi, \alpha_2 \pi,\cdots, \alpha_n \pi$とするとき
\begin{align}
\frac{dw}{dz} = \gamma(z-a_1)^{\alpha_1 - 1}(z-a_2)^{\alpha_2 - 1} \cdots
(z-a_n)^{\alpha_n - 1}
\end{align}
によって,半平面から$n$角形に写される.
直感的な理解は,実軸上の点$a_l$を実軸に沿って通過するとき,$(z-a_l)$の符号が変わる,つまり$\pi$だけ角度が変わることを用います.このとき$(z-a_l)^{\alpha_l - 1}$の項により $\pi(\alpha_l - 1)$だけ角度が変化することを考えれば,納得がいくかと思います.
これを用いると,半平面から長方形の写像は,以下のように楕円積分を用いた式によって与えられます.詳細は[2]の文献でご確認ください.
\begin{align} w = \int_{0}^z \frac{1}{\sqrt{(1-k^2z’^2)(1-z’^2)}} dz’ \end{align}
これが出来たら,以下のような流れで画像から円への写像が完成します.
- 画像から半平面への写像を計算
- 半平面から円への計算
まとめ
次回は実際にこれを実装してみます.
参考文献
[1] Genus Zero Surface Conformal Mapping and Its Application to Brain Surface Mapping,
Xianfeng Gu, Yalin Wang, Tony F. Chan, Paul M. Thompson, Shing-Tung Yau
Mark J. Ablowitz, University of Colorado, Boulder , Athanassios S. Fokas, Imperial College of Science, Technology and Medicine, London