在 IDL 版本的 HEALPix (pix2vec_nest) 中有一个很好的函数,它可以返回一个带有像素顶点坐标的向量 (n,3,4)。C 版本中的相同功能不会做同样的事情,看起来你可以只知道像素中心的坐标。有没有办法计算顶点的坐标?
这个东西的几何和数学对我来说有点难写一个 HEALPix 像素化的生成器。我试图理解 IDL 代码以便将功能添加到 C 库中,但它看起来非常混乱,带有难以辨认的变量名称。
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”中还有其他代码可以使用所有这些参数调用此函数..如果您有想法..提前致谢。