DOSEIの日記

技術メモ+日常ログ

謎座標系

前回でっち上げた、謎の局所座標系 (id:DOSEI:20091030:p1) について。

地球物理とかその辺では、使われているっぽい。たとえば、

この論文では、球面を 6 分割して、それぞれの面でこの座標系を設定して偏微分方程式を解いている。この座標系を cubed sphere と呼んでいる。

で、この座標系について計算したのをメモ。

S^2 は、 E^3 上の単位球面として、 S^2 の中心を原点としたユークリッド座標を張る。

S^2 上の点 p = (x, y, z) とする。ただし、 z > 0 のみを考える。この点 p の謎座標 (u, v) を以下のように定める。


 u = \rm{atan2}(x, z), \quad v = -\rm{atan2}(y, z)
ただし、 atan2 は、 tan−1 の拡張。

つっても、ここでは範囲を制限してるから、関係ないか。

このマップによって、 z の正の方にある点 (上半球面) は u-v 座標と1対1に対応する。この座標系は、直交しないことに注意。

S^2 上のベクトル場を考える。点 p でのベクトルは、 S^2 の接線ベクトルであり、これを u, v 成分に分解したい。そのために、 u, v 方向の単位接ベクトル e_u, e_v を求める。そうすれば、任意の接ベクトル t := (t_x, t_y, t_z) は、 u, v 座標系のベクトル  (\bf{e}_u, \bf{e}_v)^\top t = (t \cdot \bf{e}_u, t \cdot \bf{e}_v)^\top となる。

今、  n := \sqrt{\tan^2 u +\tan^2 v +1} とすると、 p での座標は (x, y, z) = (tan u, −tan v, 1) / n である。

したがって、  \bf{e}_u = \left(\partial_u (x, y, z)\right)^{\rm{N}},  \bf{e}_v = \left(\partial_v (x, y, z)\right)^{\rm{N}} となる。ここで、 ()N は、単位ベクトルに正規化する操作を表す。

で、ゴリゴリ計算すると、結局


 \bf{e}_u = \left( -\tan u (x, y, z)^\top + (n^2, 0, 0)^\top \right\)^{\rm{N}}
 \bf{e}_v = \left( -\tan v (x, y, z)^\top - (0, n^2, 0)^\top  \right\)^{\rm{N}}

これ以上簡略化はできないと思う。maxima で計算して、数値的に実験してたしかめたのであってるはず。特に u, v がそれぞれ 0 でない場合は、 tan u, tan v をくくり出せるので、多少計算量は減る。