HiRISE

HiRISE.HiPlan.HiSEAS
Class AbstractStereoPair

java.lang.Object
  extended by HiRISE.HiPlan.HiSEAS.AbstractStereoPair
All Implemented Interfaces:
StereoPair
Direct Known Subclasses:
MroStereoPair, SimpleStereoPair

public abstract class AbstractStereoPair
extends Object
implements StereoPair

A skeletal implementation of the stereo pair interface. It contains an implementation of the algorithm for determining the stereo separation angle, which subclasses can invoke and cache at construction time or simply use directly.

Version:
1.4
Author:
Christian Schaller - UA/PIRL

Field Summary
static String ID
          Class identification name with source code version and date.
protected  Observation stereo1
          The stereo-1 observation.
protected  Observation stereo2
          The stereo-2 observation.
 
Constructor Summary
protected AbstractStereoPair(Observation stereo1, Observation stereo2)
          Constructs a new abstract stereo pair from a pair of observations.
 
Method Summary
abstract  String getComment()
          Gets the stereo pair's comment.
 double getEmissionAngleDifference()
          Gets the absolute value of the difference in the emission angle between the two halves of the stereo pair.
 double getIncidenceAngleDifference()
          Gets the absolute value of the difference in the incidence angle between the two halves of the stereo pair.
abstract  String getLabel()
          Gets the stereo pair's label.
 double getPhaseAngleDifference()
          Gets the absolute value of the difference in the phase angle between the two halves of the stereo pair.
 double getSolarAzimuthChange()
          Gets the change in solar azimuth between the two halves of the stereo pair.
 double getSolarAzimuthDifference()
          Gets the difference in solar azimuth between the two halves of the stereo pair.
 double getSolarLongitudeDifference()
          Gets the difference in solar longitude between the two halves of the stereo pair.
 double getSolarSeparation()
          Gets the solar separation angle for the pair.
 Observation getStereo1()
          Gets the stereo-1 observation of the pair.
 Observation getStereo2()
          Gets the stereo-2 observation of the pair.
 double getStereoSeparation()
          Gets the stereo separation angle for the pair.
 double getSubsolarLatitudeChange()
          Gets the change in subsolar latitude between the two halves of the stereo pair.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ID

public static final String ID
Class identification name with source code version and date.

See Also:
Constant Field Values

stereo1

protected final Observation stereo1
The stereo-1 observation. There is no requirement that this observation be the first observation or the "left-eye" observation or the "right-eye" observation, etc.


stereo2

protected final Observation stereo2
The stereo-2 observation. There is no requirement that this observation be the second observation or the "right-eye" observation or the "left-eye" observation, etc.

Constructor Detail

AbstractStereoPair

protected AbstractStereoPair(Observation stereo1,
                             Observation stereo2)
Constructs a new abstract stereo pair from a pair of observations. The observations must be of the same target site.

Parameters:
stereo1 - the stereo-1 observation.
stereo2 - the stereo-2 observation.
Throws:
IllegalArgumentException - if the two observations are not of the same target site.
Method Detail

getStereo1

public Observation getStereo1()
Gets the stereo-1 observation of the pair.

Specified by:
getStereo1 in interface StereoPair
Returns:
the stereo-1 observation of the pair.

getStereo2

public Observation getStereo2()
Gets the stereo-2 observation of the pair.

Specified by:
getStereo2 in interface StereoPair
Returns:
the stereo-2 observation of the pair.

getStereoSeparation

public double getStereoSeparation()
Gets the stereo separation angle for the pair. The separation angle is the angle between the view vectors of the two observations. Mathematically, the angle, &theta, is computed as follows for vectors u (stereo-1) and v (stereo-2):
θ = acos ((u ⋅ v) / (||u|| ||v||))

The separation angle is also known as the stereo convergence angle.

Specified by:
getStereoSeparation in interface StereoPair
Returns:
the stereo separation angle in radians.

getSolarSeparation

public double getSolarSeparation()
Gets the solar separation angle for the pair. The solar separation angle is the angle describing the change in the sun's position, as viewed from the target site, between the two observations.

Mathematically, the angle θ, is computed as follows. For solar altitude a and azimuth z, for observations 1 and 2, the separation is

θ = acos (cos a1 cos a2 cos (z1 - z2) + sin a1 sin a2)

(This equation is the same as for getStereoSeparation(), but for the sun's position in spherical coordinates with unit vectors described by a and z.)

Specified by:
getSolarSeparation in interface StereoPair
Returns:
the solar separation angle in radians.

getSolarLongitudeDifference

public double getSolarLongitudeDifference()
Gets the difference in solar longitude between the two halves of the stereo pair. This difference is the smaller positive difference; if the stereo-1 observation is at π radians (autumn) and the stereo-2 observation is π/2 radians (summer), this difference π/2 radians, not 3π/2.

Specified by:
getSolarLongitudeDifference in interface StereoPair
Returns:
the small positive solar longitude difference in radians.

getSubsolarLatitudeChange

public double getSubsolarLatitudeChange()
Gets the change in subsolar latitude between the two halves of the stereo pair. For subsolar latitude φS for the stereo-1 and stereo-2 observations, the change, ΔφS is
ΔφS = φS,2 - φS,1

Specified by:
getSubsolarLatitudeChange in interface StereoPair
Returns:
the subsolar latitude change in radians.

getSolarAzimuthChange

public double getSolarAzimuthChange()
Gets the change in solar azimuth between the two halves of the stereo pair. For solar azimuth phi; for the stereo-1 and stereo-2 observations, the change, Δφ, is
Δφ = φ2 - φ1

Specified by:
getSolarAzimuthChange in interface StereoPair
Returns:
the solar azimuth change in radians.

getSolarAzimuthDifference

public double getSolarAzimuthDifference()
Gets the difference in solar azimuth between the two halves of the stereo pair. This difference is the smaller positive difference; if the stereo-1 observation is at π radians and the stereo-2 observation is π/2 radians, this difference π/2 radians, not 3π/2.

Specified by:
getSolarAzimuthDifference in interface StereoPair
Returns:
the small positive solar between difference in radians.

getPhaseAngleDifference

public double getPhaseAngleDifference()
Gets the absolute value of the difference in the phase angle between the two halves of the stereo pair.

Specified by:
getPhaseAngleDifference in interface StereoPair
Returns:
the phase angle difference in radians.

getIncidenceAngleDifference

public double getIncidenceAngleDifference()
Gets the absolute value of the difference in the incidence angle between the two halves of the stereo pair.

Specified by:
getIncidenceAngleDifference in interface StereoPair
Returns:
the incidence angle difference in radians.

getEmissionAngleDifference

public double getEmissionAngleDifference()
Gets the absolute value of the difference in the emission angle between the two halves of the stereo pair.

Specified by:
getEmissionAngleDifference in interface StereoPair
Returns:
the emission angle difference in radians.

getLabel

public abstract String getLabel()
Gets the stereo pair's label.

Specified by:
getLabel in interface StereoPair
Returns:
the stereo pair's label.

getComment

public abstract String getComment()
Gets the stereo pair's comment.

Specified by:
getComment in interface StereoPair
Returns:
the stereo pair's comment.

HiRISE

Copyright (C) Arizona Board of Regents on behalf of the Planetary Image Research Laboratory, Lunar and Planetary Laboratory at the University of Arizona