skyview.geometry.projecter
Class ToaProjecter

java.lang.Object
  extended by skyview.geometry.Transformer
      extended by skyview.geometry.Projecter
          extended by skyview.geometry.projecter.ToaProjecter
All Implemented Interfaces:
java.io.Serializable, Component

public class ToaProjecter
extends Projecter

This class provides for the translation between coordinates and an HTM-based projection.

The projection is centered at the north pole. The south pole is projected to the four corners at (+/-1, +/-1). The equator projects to the diagonals running between the points (-1,0)->(0,1), (0,1)->(1,0), (1,0)->(0,-1), (-1,0)->(0,-1). These diagonals divide the four unit squares at the center of the coordinate grid into 8 right isoceles triangles.

The position 0,0 projects to 0,1 while the position 90,0 projects to 1,0. Note that in an astronomical projection the coordinates will normally have the X axis inverted, so that 0,0 will project to -1,0.

The 8 triangles correspond to the 8 initial triangles of the HTM decomposition of the sphere. The projection is defined such that the subtriangles in the HTM decomposition are mapped to isoceles right-triangles in the projection plane.

This call may be called in the same fashion as standard projections or it may be called to create a tile space. In this case the object immediately computes the coordinates corresponding to all pixels in a tile and later returns these as requested.

The tiles are numbered with tile 0,0 as the top, left tile. The vertical orientation of the tiles is therefore the opposite of the orientation of the pixel values within the tiles and within the FITS files generated. Note that when SkyView generates quicklook images it flips the Y-axis to accommodate the difference between the astronomical and imaging conventions.

See Also:
Serialized Form

Nested Class Summary
 class ToaProjecter.ToaDeprojecter
          Deproject from the ToastPlane back to the unit sphere
 
Constructor Summary
ToaProjecter()
           
 
Method Summary
 double[] find(double lon, double lat)
           
 java.lang.String getDescription()
          Get the description of this component.
 java.lang.String getName()
          Get the name of this component.
 Deprojecter inverse()
          Get the inverse
 boolean isInverse(Transformer obj)
          Are these two transformations, inverses of each other? This method is used to optimize a series of transformations where transformations.
static void main(java.lang.String[] args)
           
 double[] project(double lon, double lat)
          Calculate the x,y corresponding to a given lon/lat
 void setPrecision(double epsilon, double minDelta)
          Specify precision used in non-grid project/deproject calculations
static void show(java.lang.String prefix, double[] vector)
           
 double[][][] tile(int level, int ix, int iy, int subdiv)
           
 void transform(double[] unit, double[] plane)
          Convert a single point where the output vector is supplied.
 
Methods inherited from class skyview.geometry.Projecter
getInputDimension, getOutputDimension
 
Methods inherited from class skyview.geometry.Transformer
transform, transform
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ToaProjecter

public ToaProjecter()
Method Detail

setPrecision

public void setPrecision(double epsilon,
                         double minDelta)
Specify precision used in non-grid project/deproject calculations


project

public double[] project(double lon,
                        double lat)
Calculate the x,y corresponding to a given lon/lat

Parameters:
lon - The longitude in radians.
lat - The latitude in radians.
Returns:
A pair of coordinates in the projection plane where there coordinates are in the range [-1,1].

find

public double[] find(double lon,
                     double lat)

getName

public java.lang.String getName()
Description copied from interface: Component
Get the name of this component.


getDescription

public java.lang.String getDescription()
Description copied from interface: Component
Get the description of this component.


isInverse

public boolean isInverse(Transformer obj)
Description copied from class: Transformer
Are these two transformations, inverses of each other? This method is used to optimize a series of transformations where transformations.

Specified by:
isInverse in class Transformer

inverse

public Deprojecter inverse()
Description copied from class: Projecter
Get the inverse

Specified by:
inverse in class Projecter

transform

public void transform(double[] unit,
                      double[] plane)
Description copied from class: Transformer
Convert a single point where the output vector is supplied.

Specified by:
transform in class Transformer
Parameters:
unit - The input vector.
plane - The output vector, it may be the same as the input vector if the dimensionalities are the same. All transformers are expected to work with aliased inputs and output.

tile

public double[][][] tile(int level,
                         int ix,
                         int iy,
                         int subdiv)

show

public static void show(java.lang.String prefix,
                        double[] vector)

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
Throws:
java.lang.Exception