示例#1
0
static XY e_rhealpix_forward(LP lp, PJ *P) { /* ellipsoid */
    struct pj_opaque *Q = P->opaque;
    XY xy;
    lp.phi = auth_lat(P, lp.phi, 0);
    xy = healpix_sphere(lp);
    return combine_caps(xy.x, xy.y, Q->north_square, Q->south_square, 0);
}
示例#2
0
 // INVERSE(s_rhealpix_inverse)  sphere
 // Project coordinates from cartesian (x, y) to geographic (lon, lat)
 inline void inv(T xy_x, T xy_y, T& lp_lon, T& lp_lat) const
 {
     /* Check whether (x, y) lies in the rHEALPix image. */
     if (in_image(xy_x, xy_y, 1, this->m_proj_parm.north_square, this->m_proj_parm.south_square) == 0) {
         lp_lon = HUGE_VAL;
         lp_lat = HUGE_VAL;
         BOOST_THROW_EXCEPTION( projection_exception(error_invalid_x_or_y) );
     }
     combine_caps(xy_x, xy_y, this->m_proj_parm.north_square, this->m_proj_parm.south_square, 1);
     return healpix_sphere_inverse(xy_x, xy_y, lp_lon, lp_lat);
 }
示例#3
0
static LP s_rhealpix_inverse(XY xy, PJ *P) { /* sphere */
    struct pj_opaque *Q = P->opaque;
    LP lp = {0.0,0.0};

    /* Check whether (x, y) lies in the rHEALPix image. */
    if (in_image(xy.x, xy.y, 1, Q->north_square, Q->south_square) == 0) {
        lp.lam = HUGE_VAL;
        lp.phi = HUGE_VAL;
        pj_ctx_set_errno(P->ctx, -15);
        return lp;
    }
    xy = combine_caps(xy.x, xy.y, Q->north_square, Q->south_square, 1);
    return healpix_sphere_inverse(xy);
}
示例#4
0
static XY s_rhealpix_forward(LP lp, PJ *P) { /* sphere */
    struct pj_opaque *Q = P->opaque;

    XY xy = healpix_sphere(lp);
    return combine_caps(xy.x, xy.y, Q->north_square, Q->south_square, 0);
}
示例#5
0
 // FORWARD(s_rhealpix_forward)  sphere
 // Project coordinates from geographic (lon, lat) to cartesian (x, y)
 inline void fwd(T const& lp_lon, T const& lp_lat, T& xy_x, T& xy_y) const
 {
     healpix_sphere(lp_lon, lp_lat, xy_x, xy_y);
     combine_caps(xy_x, xy_y, this->m_proj_parm.north_square, this->m_proj_parm.south_square, 0);
 }