有没有办法在HEALPix C库中找到像素的顶点?

时间:2019-06-09 19:01:23

标签: c idl healpy

在IDA版本的HEALPix(pix2vec_nest)中有一个很好的函数,它可以返回带有像素顶点坐标的向量(n,3,4)。 在C版本中,相同的功能不能实现相同的功能,看起来您只能知道像素中心的坐标。有没有一种方法可以计算顶点的坐标?

对于我来说,编写HEALPix pixelzation生成器对我来说有点困难。我试图了解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”中还有其他代码可以使用所有这些参数来调用此函数。

1 个答案:

答案 0 :(得分:0)

在C库中没有这样的功能。您可以在Java版本,IDL版本和HEALPix库3.50版的C ++版本中找到它。 我已经使用了C ++版本,并且效果很好。由于算法的复杂性,我发现很难将代码转换为C。