Class HemisphereProjection

  • All Implemented Interfaces:
    Projection

    public class HemisphereProjection
    extends java.lang.Object
    implements Projection
    Toy projection class that provides a rotatable sphere. May not be completely working. Use SinProjection instead.
    Since:
    21 Feb 2013
    Author:
    Mark Taylor
    • Constructor Summary

      Constructors 
      Constructor Description
      HemisphereProjection()
      Constructs a HemisphereProjection with default characteristics.
      HemisphereProjection​(boolean upNorth)
      Constructs a HemisphereProjection optionally with north fixed pointing up.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      SkyAspect createAspect​(boolean reflect, double[] r3, double radiusRad, Range[] ranges)
      Creates a SkyAspect from configuration information.
      double[] cursorRotate​(double[] rot0, java.awt.geom.Point2D.Double pos0, java.awt.geom.Point2D.Double pos1)
      Attempts to return a rotation matrix corresponding to moving the cursor between two plane positions.
      boolean equals​(java.lang.Object o)  
      SkyFov getFov​(SkySurface surf)
      Returns the field of view represented by this aspect.
      java.lang.String getProjectionDescription()
      Returns a short description of the projection.
      java.lang.String getProjectionName()
      Returns the projection name.
      java.awt.Shape getProjectionShape()
      Returns the shape which encloses all the plane positions to which legal sky coordinates can be projected.
      int hashCode()  
      boolean isContinuous()
      Indicates whether this projection is known to be continous over its whole range.
      boolean project​(double rx, double ry, double rz, java.awt.geom.Point2D.Double pos)
      Transforms a sky position to a plane position.
      double[] projRotate​(double[] rot0, java.awt.geom.Point2D.Double pos0, java.awt.geom.Point2D.Double pos1)
      Attempts to return a rotation matrix that will transform a sky position from one plane position to another.
      boolean unproject​(java.awt.geom.Point2D.Double ppos, double[] r3)
      Transforms a plane position to a sky position.
      boolean useRanges​(boolean reflect, double[] r3, double radiusRad)
      Indicates whether ranges should be provided to generate a SkyAspect.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • HemisphereProjection

        public HemisphereProjection()
        Constructs a HemisphereProjection with default characteristics.
      • HemisphereProjection

        public HemisphereProjection​(boolean upNorth)
        Constructs a HemisphereProjection optionally with north fixed pointing up.
        Parameters:
        upNorth - whether north is fixed to align with the screen Y direction
    • Method Detail

      • getProjectionName

        public java.lang.String getProjectionName()
        Description copied from interface: Projection
        Returns the projection name.
        Specified by:
        getProjectionName in interface Projection
        Returns:
        user-directed projection name
      • getProjectionDescription

        public java.lang.String getProjectionDescription()
        Description copied from interface: Projection
        Returns a short description of the projection. return projection description
        Specified by:
        getProjectionDescription in interface Projection
      • isContinuous

        public boolean isContinuous()
        Description copied from interface: Projection
        Indicates whether this projection is known to be continous over its whole range. Returns false if there may be any cases for which small changes in the 3-vector leads to large changes in the plane position (such as near lon=180 in an Aitoff, but not a Sinus, projection).
        Specified by:
        isContinuous in interface Projection
        Returns:
        true iff this projection is known to be continuous
      • project

        public boolean project​(double rx,
                               double ry,
                               double rz,
                               java.awt.geom.Point2D.Double pos)
        Description copied from interface: Projection
        Transforms a sky position to a plane position.
        Specified by:
        project in interface Projection
        Parameters:
        rx - normalised 3D X coordinate
        ry - normalised 3D Y coordinate
        rz - normalised 3D Z coordinate
        pos - point object into which projected dimensionless X,Y coordinates will be written on success
        Returns:
        true if transformation succeeded
      • unproject

        public boolean unproject​(java.awt.geom.Point2D.Double ppos,
                                 double[] r3)
        Description copied from interface: Projection
        Transforms a plane position to a sky position.
        Specified by:
        unproject in interface Projection
        Parameters:
        ppos - contains dimensionless X,Y coordinates of plane position
        r3 - 3-element array into which normalised X,Y,Z sky coordinates will be written on success
        Returns:
        true if transformation succeeded
      • getProjectionShape

        public java.awt.Shape getProjectionShape()
        Description copied from interface: Projection
        Returns the shape which encloses all the plane positions to which legal sky coordinates can be projected. Typically this has linear dimensions of the order of PI.
        Specified by:
        getProjectionShape in interface Projection
        Returns:
        projected sky shape
      • cursorRotate

        public double[] cursorRotate​(double[] rot0,
                                     java.awt.geom.Point2D.Double pos0,
                                     java.awt.geom.Point2D.Double pos1)
        Description copied from interface: Projection
        Attempts to return a rotation matrix corresponding to moving the cursor between two plane positions. Ideally this should do the same thing as projRotate, for both positions on the sky, and provide some other intuitive behaviour if one or both is out of the projection range.

        Null may be returned if this projection does not support rotation.

        Specified by:
        cursorRotate in interface Projection
        Parameters:
        rot0 - initial rotation matrix
        pos0 - initial cursor position
        pos1 - destination cursor position
        Returns:
        destination rotation matrix, or null
      • projRotate

        public double[] projRotate​(double[] rot0,
                                   java.awt.geom.Point2D.Double pos0,
                                   java.awt.geom.Point2D.Double pos1)
        Description copied from interface: Projection
        Attempts to return a rotation matrix that will transform a sky position from one plane position to another.

        Consider a sky point S, rotated by an initial rotation matrix rotmat to S', which when projected by this projection lands on the plane at pos0. This method attempts to determine a rotation matrix which when used instead of rotmat would end up with the rotated and projected point at pos1.

        Null may be returned if this projection does not support projection.

        Specified by:
        projRotate in interface Projection
        Parameters:
        rot0 - initial rotation matrix
        pos0 - initial projected position
        pos1 - destination projected position
        Returns:
        destination rotation matrix, or null
      • useRanges

        public boolean useRanges​(boolean reflect,
                                 double[] r3,
                                 double radiusRad)
        Description copied from interface: Projection
        Indicates whether ranges should be provided to generate a SkyAspect. If supplied field of view arguments are sufficient, or if a default aspect is always produced, return false.
        Specified by:
        useRanges in interface Projection
        Parameters:
        reflect - whether requested aspect will be reflected
        r3 - central position of field of view (may be null)
        radiusRad - radius of field of view (may be NaN)
        Returns:
        true if ranges would be useful given the other arguments
        See Also:
        SurfaceFactory.readRanges(P, uk.ac.starlink.ttools.plot2.PlotLayer[], uk.ac.starlink.ttools.plot2.data.DataStore)
      • getFov

        public SkyFov getFov​(SkySurface surf)
        Description copied from interface: Projection
        Returns the field of view represented by this aspect. This is a best estimate, it may be approximate depending on the projection geometry. If the field of view is the default for this projection, then null should be returned. Null may also be returned if for some reason no field of view can be determined.
        Specified by:
        getFov in interface Projection
        Parameters:
        surf - sky surface, which must be set up using this projection
        Returns:
        field of view, or null
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object