【问题标题】:Healpy display grid and midpointsHealpy 显示网格和中点
【发布时间】:2017-03-21 15:08:25
【问题描述】:

使用python healpy,我想显示(并导出)用于天空镶嵌(在不同级别)的healpix 网格。我该怎么做呢?理想情况下,我需要中点、网格的顶点以及连接它们的线。

非常感谢任何帮助。

【问题讨论】:

    标签: healpy


    【解决方案1】:

    我已经研究过了,还有更多方法:

    1) 您可以使用具有函数 pix2vec_nest(和 pix2vec_ring)的 IDL 库,而不是可以选择返回向量(n,3,4)中像素的 4 个顶点。

    2)你可以使用有HealpixBase.boundaries方法的java版本

    3) 您可以使用具有相同作用的 T_Healpix_Base::boundaries 的 HEALPix_cxx 库。

    使用边界,您可以显示网格。请注意,最后一种方法的编码非常好,并且在另一个程序中很容易理解和使用!它只需要像素索引和输出向量:

     template<typename I> void T_Healpix_Base<I>::boundaries(I pix, tsize step,
      vector<vec3> &out) const
      {
      out.resize(4*step);
      int ix, iy, face;
      pix2xyf(pix, ix, iy, face);
      double dc = 0.5 / nside_;
      double xc = (ix + 0.5)/nside_, yc = (iy + 0.5)/nside_;
      double d = 1.0/(step*nside_);
      for (tsize i=0; i<step; ++i)
        {
        double z, phi, sth;
        bool have_sth;
        xyf2loc(xc+dc-i*d, yc+dc, face, z, phi, sth, have_sth);
        out[i] = locToVec3(z, phi, sth, have_sth);
        xyf2loc(xc-dc, yc+dc-i*d, face, z, phi, sth, have_sth);
        out[i+step] = locToVec3(z, phi, sth, have_sth);
        xyf2loc(xc-dc+i*d, yc-dc, face, z, phi, sth, have_sth);
        out[i+2*step] = locToVec3(z, phi, sth, have_sth);
        xyf2loc(xc+dc, yc-dc+i*d, face, z, phi, sth, have_sth);
        out[i+3*step] = locToVec3(z, phi, sth, have_sth);
        }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      相关资源
      最近更新 更多