IDL バージョンの HEALPix (pix2vec_nest) には、ピクセルの頂点の座標を持つベクトル (n,3,4) を返すことができる便利な機能があります。C版の同じ関数は同じことをしません。ピクセルの中心の座標だけを知ることができるようです。頂点の座標を計算する方法はありますか?
このことの幾何学と数学は、HEALPix pixelzation のジェネレーターを書くのに少し難しいです。Cライブラリに機能を追加するためにIDLコードを理解しようとしましたが、判読できない変数名で非常に乱雑に見えます。
function sub_compute_vertices, z, z_nv, z_sv, phi, phi_nv, phi_sv, hdelta_phi
np = n_elements(z)
vertex = dblarr(np, 3, 4)
sth = SQRT((1.0d0-z)*(1.0d0+z))
sth_nv = sqrt((1.0d0-z_nv)*(1.0d0+z_nv))
vertex[*,*,0] = [[sth_nv*cos(phi_nv)],[sth_nv*sin(phi_nv)],[z_nv]] ; north vertex
phi_wv = phi - hdelta_phi
vertex[*,*,1] = [[sth*cos(phi_wv)],[sth*sin(phi_wv)],[z]] ; west vertex
sth_sv = sqrt((1.0d0-z_sv)*(1.0d0+z_sv))
vertex[*,*,2] = [[sth_sv*cos(phi_sv)],[sth_sv*sin(phi_sv)],[z_sv]] ; south vertex
phi_ev = phi + hdelta_phi
vertex[*,*,3] = [[sth*cos(phi_ev)],[sth*sin(phi_ev)],[z]] ; east vertex
return, vertex
このコードはある意味単純に見えますが、ファイル「Healpix_3.50\src\idl\toolkitpix2vec_nest.pro」には、これらすべてのパラメーターを指定してこの関数を呼び出す他のコードがあります..お持ちでアイデアがある場合..事前に感謝します.