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

标签 c idl healpy

HEALPix 的 IDL 版本(pix2vec_nest)中有一个很好的函数,它可以返回带有像素顶点坐标的 vector (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”中还有其他代码,它使用所有这些参数调用此函数..如果您有想法..谢谢提前。

最佳答案

C 库中没有这样的函数。您可以在 HEALPix 库版本 3.50 的 Java 版本、IDL 版本和 C++ 版本中找到它。 我用过C++版本,效果很好。由于算法的复杂性,我发现很难将代码转换为 C。

关于c - 有没有办法在 HEALPix C 库中查找像素的顶点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56517555/

相关文章:

c指针和数组,将内容复制到另一个数组

c++ - cpp中的assert.h有什么用?

c - A* 在 C 中用于二维数组寻路是否合理?

vb6 - 为 MAPI-MIME 转换创建 IDL

healpy synfast : how to define the random seed

使用 C 控制 cmd 提示符

com - 如何在 IDL 中声明 void* 类型的参数

c++ - COM:如何将特定类型的 COM 对象指定为 idl 中的参数

python - 适合 WCS 来治愈

python - Healpy 在 Windows 上安装 Python 3.4