Package uk.ac.starlink.ttools.plot2.geom
Class HemisphereProjection
java.lang.Object
uk.ac.starlink.ttools.plot2.geom.HemisphereProjection
- All Implemented Interfaces:
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
ConstructorsConstructorDescriptionConstructs a HemisphereProjection with default characteristics.HemisphereProjection
(boolean upNorth) Constructs a HemisphereProjection optionally with north fixed pointing up. -
Method Summary
Modifier and TypeMethodDescriptioncreateAspect
(boolean reflect, double[] r3, double radiusRad, Range[] ranges) Creates a SkyAspect from configuration information.double[]
cursorRotate
(double[] rot0, Point2D.Double pos0, Point2D.Double pos1) Attempts to return a rotation matrix corresponding to moving the cursor between two plane positions.boolean
getFov
(SkySurface surf) Returns the field of view represented by this aspect.Returns a short description of the projection.Returns the projection name.Returns the shape which encloses all the plane positions to which legal sky coordinates can be projected.int
hashCode()
boolean
Indicates whether this projection is known to be continous over its whole range.boolean
isContinuousLine
(double[] r3a, double[] r3b) Indicates whether a line between the two given sky positions is (believed to be) continuous.boolean
project
(double rx, double ry, double rz, Point2D.Double pos) Transforms a sky position to a plane position.double[]
projRotate
(double[] rot0, Point2D.Double pos0, Point2D.Double pos1) Attempts to return a rotation matrix that will transform a sky position from one plane position to another.boolean
unproject
(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.
-
Constructor Details
-
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 Details
-
getProjectionName
Description copied from interface:Projection
Returns the projection name.- Specified by:
getProjectionName
in interfaceProjection
- Returns:
- user-directed projection name
-
getProjectionDescription
Description copied from interface:Projection
Returns a short description of the projection. return projection description- Specified by:
getProjectionDescription
in interfaceProjection
-
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 whichisContinuousLine
returns false.- Specified by:
isContinuous
in interfaceProjection
- Returns:
- true iff this projection is known to be continuous
-
isContinuousLine
public boolean isContinuousLine(double[] r3a, double[] r3b) Description copied from interface:Projection
Indicates whether a line between the two given sky positions is (believed to be) continuous. "Line" in this context should ideally be interpreted as the shorter arc on a great circle. A line crossing lon=180 for instance would be discontinuous in an Aitoff projection, but not in a Sin projection.- Specified by:
isContinuousLine
in interfaceProjection
- Parameters:
r3a
- 3-element array giving normalised X,Y,Z coordinates of line startr3b
- 3-element array giving normalised X,Y,Z coordinates of line end- Returns:
- true if line is believed to be continuous; if in doubt, probably better to return true
-
project
Description copied from interface:Projection
Transforms a sky position to a plane position.- Specified by:
project
in interfaceProjection
- Parameters:
rx
- normalised 3D X coordinatery
- normalised 3D Y coordinaterz
- normalised 3D Z coordinatepos
- point object into which projected dimensionless X,Y coordinates will be written on success- Returns:
- true if transformation succeeded
-
unproject
Description copied from interface:Projection
Transforms a plane position to a sky position.- Specified by:
unproject
in interfaceProjection
- Parameters:
ppos
- contains dimensionless X,Y coordinates of plane positionr3
- 3-element array into which normalised X,Y,Z sky coordinates will be written on success- Returns:
- true if transformation succeeded
-
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 interfaceProjection
- Returns:
- projected sky shape
-
cursorRotate
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 asprojRotate
, 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 interfaceProjection
- Parameters:
rot0
- initial rotation matrixpos0
- initial cursor positionpos1
- destination cursor position- Returns:
- destination rotation matrix, or null
-
projRotate
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 atpos0
. This method attempts to determine a rotation matrix which when used instead ofrotmat
would end up with the rotated and projected point atpos1
.Null may be returned if this projection does not support projection.
- Specified by:
projRotate
in interfaceProjection
- Parameters:
rot0
- initial rotation matrixpos0
- initial projected positionpos1
- 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 interfaceProjection
- Parameters:
reflect
- whether requested aspect will be reflectedr3
- 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:
-
createAspect
Description copied from interface:Projection
Creates a SkyAspect from configuration information. Either the supplied field of view or data ranges may be used, or neither.- Specified by:
createAspect
in interfaceProjection
- Parameters:
reflect
- whether requested aspect will be reflectedr3
- central position of field of view (may be null)radiusRad
- radius of field of view (may be NaN)ranges
- definite ranges for normalised X,Y,Z coordinates acquired from data- Returns:
- new sky aspect
- See Also:
-
getFov
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 interfaceProjection
- Parameters:
surf
- sky surface, which must be set up using this projection- Returns:
- field of view, or null
-
equals
-
hashCode
public int hashCode()
-