ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】Stereographic Projectionで球面を平面に投影する。

成果物

www.youtube.com
球面の模様を平面に投影した面白い画像が載っている本を読んで、ずっとやりたいと思っていたStereographic Projectionのやり方を見つけたので早速やってみました。動画内で線がちらちら出てきますが、一番外側の線が真上に来た時に生じるもので、バグではありません。

仕組み

こちらの式で、球面の極座標をx,yに変換することで求めることができます。
 \begin{array}{l}
x\ \ =\ \ k\cos( \phi )\sin( \lambda -\lambda _{0})\\
y\ \ =\ \ k[\cos( \phi _{1})\sin( \phi ) -\sin( \phi _{1})\cos( \phi )\cos( \lambda -\lambda _{0})]\\
 -\pi \leq \lambda \leq \pi ( 経度)\\
 -\frac{\pi }{2} \leq \phi \leq \frac{\pi }{2}( 緯度)\\
\lambda _{0}( 球体の経度方向の回転)\\
\phi _{1}( 球体の緯度方向の回転)
\end{array}
参考にしたサイトには、逆変換する方法も載っています。球面の画像を投影したい時に役立ちそうです。
Stereographic Projection -- from Wolfram MathWorld
Stereographic Projectionに関する面白い動画があるのでチェックしてみてください。
www.youtube.com

コード