【问题标题】:Is there a way for finding the vertices of the pixel in the HEALPix C library?有没有办法在 HEALPIx C 库中找到像素的顶点?
【发布时间】:2019-06-09 19:01:23
【问题描述】:

在 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”中还有其他代码使用所有这些参数调用此函数..如果您有想法..谢谢提前。

【问题讨论】:

  • 我不了解healpy,但不清楚您所说的“像素的顶点”是什么意思。一个像素是一个点,或者你的意思是一个被投影为单个像素的对象?
  • 哦,不是! : ) 在您的屏幕上,像素是正方形的,边长为几微米!在宇宙球面图中,您也有像素。而且您希望它们具有相同的区域(和其他功能),因此他们发明了 HEALPix 像素化。这些像素是菱形的,它们也有中心和边界!有时您需要知道像素的确切起点和终点。
  • 所以我的第二个说法是正确的。

标签: c idl healpy


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2015-12-30
    相关资源
    最近更新 更多