/** * # API Reference * * This package based on this paper: [Gorski (2005)](http://iopscience.iop.org/article/10.1086/427976/pdf). * * The key things to understand the implementation are: * - Spherical coordinates in different representations such as `(alpha, delta)` * or `(theta, phi)` or `(X, Y, z)` are always normalised to `(z, a)`. * - The HEALPix spherical projection is used to map to `(t, u)` (see `za2tu` and `tu2za`). * See Section 4.4 and Figure 5 in the paper, where `(t, u)` is called `(x_s, y_s)`. * * - A simple affine transformation is used to map to `(f, x, y)` (see `tu2fxy` and `fxy2tu`), * where `f = {0 .. 11}` is the base pixel index and `(x, y)` is the position * within the base pixel in the (north-east, north-west) direction * and `(0, 0)` in the south corner. * - From `(f, x, y)`, the HEALPix pixel index in the "nested" scheme * is related via `fxy2nest` and `nest2fxy`, and in the "ring" scheme * via `fxy2ring` and `ring2fxy` in a relatively simple equations. * * To summarise: there are two geometrical transformations: * `(z, a)` <-> `(t, u)` is the HEALPix spherical projection, * and `(t, u)` <-> `(f, x, y)` is a 45 deg rotation and scaling for each * of the 12 base pixels, so that HEALPix pixels in `(x, y)` are unit squares, * and pixel index compuatations are relatively straightforward, * both in the "nested" and "ring" pixelisation scheme. * * ## Notations * *
* theta : colatitude (pi/2 - delta) [0 , pi]
* phi : longitude (alpha) [0, 2 pi)
* t : coord. of x-axis in spherical projection [0, 2 pi)
* u : coord. of y-axis in spherical projection [-pi/2, pi/2]
* z : cos(theta) [-1, 1]
* X : sin(theta) * cos(phi) [-1, 1]
* Y : sin(theta) * sin(phi) [-1, 1]
* a : phi [0, 2 pi)
* f : base pixel index {0 .. 11}
* x : north-east index in base pixel [0, nside)
* y : north-west index in base pixel [0, nside)
* p : north-east axis in base pixel [0, 1)
* q : north-west axis in base pixel [0, 1)
* j : pixel-in-ring index polar cap: {1 .. 4 i}
* equatorial belt: {1 .. 4 nside}
* i : ring index {1 .. 4 nside - 1}
*
*/
/**
* 3D Vector
*/
export declare type V3 = [number, number, number];
export declare function order2nside(order: number): number;
export declare function nside2order(nside: number): number;
export declare function nside2npix(nside: number): number;
export declare function vec2pix_nest(nside: number, v: V3): number;
export declare function vec2pix_ring(nside: number, v: V3): number;
export declare function ang2pix_nest(nside: number, theta: number, phi: number): number;
export declare function ang2pix_ring(nside: number, theta: number, phi: number): number;
export declare function nest2ring(nside: number, ipix: number): number;
export declare function ring2nest(nside: number, ipix: number): number;
export declare function ring2fxy(nside: number, ipix: number): {
f: number;
x: number;
y: number;
};
export declare function pix2vec_nest(nside: number, ipix: number): V3;
export declare function pix2ang_nest(nside: number, ipix: number): {
theta: number;
phi: number;
};
export declare function pix2vec_ring(nside: number, ipix: number): V3;
export declare function pix2ang_ring(nside: number, ipix: number): {
theta: number;
phi: number;
};
export declare function query_disc_inclusive_nest(nside: number, v: V3, radius: number, cb: (ipix: number) => void): void;
export declare function query_disc_inclusive_ring(nside: number, v: V3, radius: number, cb_ring: (ipix: number) => void): void;
export declare function max_pixrad(nside: number): number;
export declare type FXY = {
f: number;
x: number;
y: number;
};
export declare function corners_nest(nside: number, ipix: number): V3[];
export declare function corners_ring(nside: number, ipix: number): V3[];
export declare function nside2pixarea(nside: number): number;
export declare function nside2resol(nside: number): number;
export declare function pixcoord2vec_nest(nside: number, ipix: number, ne: number, nw: number): V3;
export declare function pixcoord2vec_ring(nside: number, ipix: number, ne: number, nw: number): V3;
export declare function tu2fxy(nside: number, t: number, u: number): {
f: number;
x: number;
y: number;
};
/**
* HEALPix spherical projection.
*/
export declare function za2tu(z: number, a: number): {
t: number;
u: number;
};
/**
* Inverse HEALPix spherical projection.
*/
export declare function tu2za(t: number, u: number): {
z: number;
a: number;
};
export declare function ang2vec(theta: number, phi: number): V3;
export declare function vec2ang(v: V3): {
theta: number;
phi: number;
};
export declare function fxy2nest(nside: number, f: number, x: number, y: number): number;
export declare function bit_combine(x: number, y: number): number;
export declare function bit_decombine(p: number): {
x: number;
y: number;
};
export declare function fxy2tu(nside: number, f: number, x: number, y: number): {
t: number;
u: number;
};
export declare function orderpix2uniq(order: number, ipix: number): number;
export declare function uniq2orderpix(uniq: number): {
order: number;
ipix: number;
};