Isis Developer Reference
|
This class is used to represent a target body in a bundle and how to solve for it. More...
#include <BundleTargetBody.h>
Public Types | |
enum | TargetRadiiSolveMethod { None = 0 , Mean = 1 , All = 2 } |
Enumeration that defines how to solve for target radii. More... | |
enum | TargetSolveCodes { PoleRA = 0 , VelocityPoleRA = 1 , AccelerationPoleRA = 2 , PoleDec = 3 , VelocityPoleDec = 4 , AccelerationPoleDec = 5 , PM = 6 , VelocityPM = 7 , AccelerationPM = 8 , TriaxialRadiusA = 9 , TriaxialRadiusB = 10 , TriaxialRadiusC = 11 , MeanRadius = 12 } |
Enumeration that defines what BundleTargetBody can solve for. More... | |
Public Member Functions | |
BundleTargetBody () | |
Creates an empty BundleTargetBody object. | |
BundleTargetBody (Target *target) | |
Creates an BundleTargetBody object from a target. | |
BundleTargetBody (const BundleTargetBody &src) | |
Copy constructor. | |
virtual | ~BundleTargetBody () |
Destructor. | |
BundleTargetBody & | operator= (const BundleTargetBody &src) |
Assignment operator. | |
void | setSolveSettings (std::set< int > targetParameterSolveCodes, Angle aprioriPoleRA, Angle sigmaPoleRA, Angle aprioriVelocityPoleRA, Angle sigmaVelocityPoleRA, Angle aprioriPoleDec, Angle sigmaPoleDec, Angle aprioriVelocityPoleDec, Angle sigmaVelocityPoleDec, Angle aprioriPM, Angle sigmaPM, Angle aprioriVelocityPM, Angle sigmaVelocityPM, TargetRadiiSolveMethod solveRadiiMethod, Distance aprioriRadiusA, Distance sigmaRadiusA, Distance aprioriRadiusB, Distance sigmaRadiusB, Distance aprioriRadiusC, Distance sigmaRadiusC, Distance aprioriMeanRadius, Distance sigmaMeanRadius) |
Sets the solve settings for the target body. | |
bool | readFromPvl (PvlObject &tbPvlObject) |
Set bundle solve parameters for target body from a pvl file. | |
LinearAlgebra::Vector & | parameterWeights () |
Returns the vector of parameter weights. | |
LinearAlgebra::Vector & | parameterCorrections () |
Returns the vector of corrections applied to the parameters. | |
LinearAlgebra::Vector & | parameterSolution () |
Returns the vector of parameters solution. | |
LinearAlgebra::Vector & | aprioriSigmas () |
Returns the vector of apriori parameters sigmas. | |
LinearAlgebra::Vector & | adjustedSigmas () |
Returns the vector of adjusted parameters sigmas. | |
std::vector< Angle > | poleRaCoefs () |
Returns the coefficients of the right ascension polynomial. | |
std::vector< Angle > | poleDecCoefs () |
Returns the coefficients of the declination polynomial. | |
std::vector< Angle > | pmCoefs () |
Returns the coefficients of the prime meridian polynomial. | |
std::vector< Distance > | radii () |
Returns the radius values. | |
Distance | meanRadius () |
Returns the mean radius. | |
QString | formatBundleOutputString (bool errorPropagation) |
Formats and returns the parameter values as a QString. | |
QStringList | parameterList () |
Returns a list of all the parameters being solved for as QStrings. | |
QString | formatValue (double value, int fieldWidth, int precision) const |
QString | formatAprioriSigmaString (int type, int fieldWidth, int precision) const |
QString | formatPolePositionAprioriSigmaString (int fieldWidth, int precision) const |
QString | formatW0AprioriSigmaString (int fieldWidth, int precision) const |
QString | formatWDotAprioriSigmaString (int fieldWidth, int precision) const |
QString | formatRadiusAprioriSigmaString (int fieldWidth, int precision) const |
QString | formatPolePositionAdjustedSigmaString (int fieldWidth, int precision) const |
QString | formatW0AdjustedSigmaString (int fieldWidth, int precision) const |
QString | formatWDotAdjustedSigmaString (int fieldWidth, int precision) const |
QString | formatRadiusAdjustedSigmaString (int fieldWidth, int precision) const |
virtual bool | solvePoleRA () |
If the pole right ascension angle will be solved for with this target body. | |
virtual bool | solvePoleRAVelocity () |
If the pole right ascension velocity will be solved for with this target body. | |
virtual bool | solvePoleRAAcceleration () |
If the pole right ascension acceleration will be solved for with this target body. | |
virtual bool | solvePoleDec () |
If the pole declination angle will be solved for with this target body. | |
virtual bool | solvePoleDecVelocity () |
If the pole declination velocity will be solved for with this target body. | |
virtual bool | solvePoleDecAcceleration () |
If the pole declination acceleration will be solved for with this target body. | |
virtual bool | solvePM () |
If the prime meridian angle will be solved for with this target body. | |
virtual bool | solvePMVelocity () |
If the prime meridian velocity will be solved for with this target body. | |
virtual bool | solvePMAcceleration () |
If the prime meridian acceleration will be solved for with this target body. | |
virtual bool | solveTriaxialRadii () |
If the triaxial radii will be solved for with this target body. | |
virtual bool | solveMeanRadius () |
If the mean radius will be solved for with this target body. | |
int | numberRadiusParameters () |
Returns the number of radius parameters being solved for. | |
virtual int | numberParameters () |
Returns the total number of parameters being solved for. | |
void | applyParameterCorrections (LinearAlgebra::Vector corrections) |
Applies a vector of corrections to the parameters for the target body. | |
double | vtpv () |
Calculates and returns the weighted sum of the squares of the corrections. | |
Distance | localRadius (const Latitude &lat, const Longitude &lon) |
Gets the local radius for the given latitude/longitude coordinate. | |
Static Public Member Functions | |
static TargetRadiiSolveMethod | stringToTargetRadiiOption (QString option) |
Converts a QString to a TargetRadiiSolveMethod. | |
static QString | targetRadiiOptionToString (TargetRadiiSolveMethod targetRadiiSolveMethod) |
Converts a TargetRadiiSolveMethod to a QString. | |
This class is used to represent a target body in a bundle and how to solve for it.
Enumeration that defines what BundleTargetBody can solve for.
Enumerator | |
---|---|
PoleRA | |
VelocityPoleRA | |
AccelerationPoleRA | |
PoleDec | |
VelocityPoleDec | |
AccelerationPoleDec | |
PM | |
VelocityPM | |
AccelerationPM | |
TriaxialRadiusA | |
TriaxialRadiusB | |
TriaxialRadiusC | |
MeanRadius |
Isis::BundleTargetBody::BundleTargetBody | ( | ) |
Creates an empty BundleTargetBody object.
References None.
Isis::BundleTargetBody::BundleTargetBody | ( | Target * | target | ) |
Creates an BundleTargetBody object from a target.
target | A pointer to the target body that this object will represent. |
References None, Isis::Target::pmCoefs(), Isis::Target::poleDecCoefs(), Isis::Target::poleRaCoefs(), and Isis::Target::radii().
Isis::BundleTargetBody::BundleTargetBody | ( | const BundleTargetBody & | src | ) |
Copy constructor.
Makes a copy of another BundleTargetBody.
src | The BundleTargetBody to copy from. |
|
virtual |
Destructor.
LinearAlgebra::Vector & Isis::BundleTargetBody::adjustedSigmas | ( | ) |
Returns the vector of adjusted parameters sigmas.
See setSolveSettings for how the vector is ordered.
void Isis::BundleTargetBody::applyParameterCorrections | ( | LinearAlgebra::Vector | corrections | ) |
Applies a vector of corrections to the parameters for the target body.
Applies a vector of corrections to the internal parameters for the target body and records the corrections in the internal corrections vector. The corrections vector should be ordered the same as the parameter vector descriped in setSolveSettings.
corrections | The vector containing correction values. |
IException::Programmer | "In BundleTargetBody::applyParameterCorrections: correction and m_targetParameter vectors sizes don't match." |
IException::Unknown | "Unable to apply parameter corrections to BundleTargetBody." |
References _FILEINFO_, AccelerationPM, AccelerationPoleDec, AccelerationPoleRA, Isis::Distance::Kilometers, Isis::Distance::kilometers(), MeanRadius, PM, PoleDec, PoleRA, Isis::IException::Programmer, Isis::Angle::Radians, TriaxialRadiusA, TriaxialRadiusB, TriaxialRadiusC, Isis::IException::Unknown, VelocityPM, VelocityPoleDec, and VelocityPoleRA.
LinearAlgebra::Vector & Isis::BundleTargetBody::aprioriSigmas | ( | ) |
Returns the vector of apriori parameters sigmas.
See setSolveSettings for how the vector is ordered.
QString Isis::BundleTargetBody::formatAprioriSigmaString | ( | int | type, |
int | fieldWidth, | ||
int | precision ) const |
QString Isis::BundleTargetBody::formatBundleOutputString | ( | bool | errorPropagation | ) |
Formats and returns the parameter values as a QString.
errorPropagation | If adjusted sigmas should be output. |
References Isis::Distance::kilometers(), Isis::Angle::Radians, solveMeanRadius(), solvePM(), solvePMVelocity(), solvePoleDec(), solvePoleDecAcceleration(), solvePoleDecVelocity(), solvePoleRA(), solvePoleRAAcceleration(), solvePoleRAVelocity(), solveTriaxialRadii(), and Isis::toString().
QString Isis::BundleTargetBody::formatPolePositionAdjustedSigmaString | ( | int | fieldWidth, |
int | precision ) const |
QString Isis::BundleTargetBody::formatPolePositionAprioriSigmaString | ( | int | fieldWidth, |
int | precision ) const |
QString Isis::BundleTargetBody::formatRadiusAdjustedSigmaString | ( | int | fieldWidth, |
int | precision ) const |
QString Isis::BundleTargetBody::formatRadiusAprioriSigmaString | ( | int | fieldWidth, |
int | precision ) const |
QString Isis::BundleTargetBody::formatValue | ( | double | value, |
int | fieldWidth, | ||
int | precision ) const |
QString Isis::BundleTargetBody::formatW0AdjustedSigmaString | ( | int | fieldWidth, |
int | precision ) const |
QString Isis::BundleTargetBody::formatW0AprioriSigmaString | ( | int | fieldWidth, |
int | precision ) const |
QString Isis::BundleTargetBody::formatWDotAdjustedSigmaString | ( | int | fieldWidth, |
int | precision ) const |
QString Isis::BundleTargetBody::formatWDotAprioriSigmaString | ( | int | fieldWidth, |
int | precision ) const |
Gets the local radius for the given latitude/longitude coordinate.
IException::Programmer | "Local radius can only be found if triaxial radii were solved for." |
References _FILEINFO_, Isis::Distance::Kilometers, Isis::IException::Programmer, and solveTriaxialRadii().
Distance Isis::BundleTargetBody::meanRadius | ( | ) |
Returns the mean radius.
IException::Programmer | "The mean radius can only be accessed when solving for mean radius." |
References _FILEINFO_, Isis::IException::Programmer, and solveMeanRadius().
|
virtual |
Returns the total number of parameters being solved for.
int Isis::BundleTargetBody::numberRadiusParameters | ( | ) |
Returns the number of radius parameters being solved for.
Returns the number of radius parameters being solved for which is based on the target radius solve method: None -> 0 Mean -> 1 All -> 3
BundleTargetBody & Isis::BundleTargetBody::operator= | ( | const BundleTargetBody & | src | ) |
Assignment operator.
Makes this a copy of another BundleTargetBody.
src | The other BundleTargetBody to assign from |
LinearAlgebra::Vector & Isis::BundleTargetBody::parameterCorrections | ( | ) |
Returns the vector of corrections applied to the parameters.
See setSolveSettings for how the vector is ordered.
QStringList Isis::BundleTargetBody::parameterList | ( | ) |
Returns a list of all the parameters being solved for as QStrings.
This should only be called after formatBundleOutputString.
LinearAlgebra::Vector & Isis::BundleTargetBody::parameterSolution | ( | ) |
Returns the vector of parameters solution.
See setSolveSettings for how the vector is ordered.
LinearAlgebra::Vector & Isis::BundleTargetBody::parameterWeights | ( | ) |
Returns the vector of parameter weights.
See setSolveSettings for how the vector is ordered.
std::vector< Angle > Isis::BundleTargetBody::pmCoefs | ( | ) |
Returns the coefficients of the prime meridian polynomial.
Returns The vector of prime meridian polynomial coefficients ordered as:
angle, velocity, acceleration.
Only coefficients that are being solved for will be included.
std::vector< Angle > Isis::BundleTargetBody::poleDecCoefs | ( | ) |
Returns the coefficients of the declination polynomial.
Returns The vector of declination polynomial coefficients ordered as:
angle, velocity, acceleration.
Only coefficients that are being solved for will be included.
std::vector< Angle > Isis::BundleTargetBody::poleRaCoefs | ( | ) |
Returns the coefficients of the right ascension polynomial.
Returns The vector of right ascension polynomial coefficients ordered as:
angle, velocity, acceleration.
Only coefficients that are being solved for will be included.
std::vector< Distance > Isis::BundleTargetBody::radii | ( | ) |
Returns the radius values.
Returns the vector of radius values formatted as RadiusA, RadiusB, RadiusC.
IException::Programmer | "The triaxial radii can only be accessed when solving for triaxial radii." |
References _FILEINFO_, Isis::IException::Programmer, and solveTriaxialRadii().
bool Isis::BundleTargetBody::readFromPvl | ( | PvlObject & | tbObject | ) |
Set bundle solve parameters for target body from a pvl file.
specifically for standard jigsaw interface, not the Integrated Photogrammetric Control Environment (IPCE)
tbObject | The Pvl file to read from. |
IException::User | "Ra must be given as none, position, velocity, or acceleration" |
IException::User | "Dec must be given as none, position, velocity, or acceleration" |
IException::User | "Pm must be given as none, position, velocity, or acceleration" |
IException::User | "RadiiSolveOption must be given as none, triaxial, or mean" |
IException::User | "RaValue must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "RaSigma must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "RaVelocityValue must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "RaVelocitySigma must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "RaAccelerationValue must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "RaAccelerationSigma must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "DecValue must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "DecSigma must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "DecVelocityValue must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "DecVelocitySigma must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "DecAccelerationValue must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "DecAccelerationSigma must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "PmValue must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "PmSigma must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "PmVelocityValue must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "PmVelocitySigma must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "PmAccelerationValue must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "PmAccelerationSigma must be a valid double (>= 0; blank defaults to 0)." |
IException::User | "RadiusAValue must be a valid double (blank defaults to 0)." |
IException::User | "RadiusAValue must be >= 0." |
IException::User | "RadiusASigma must be a valid double (blank defaults to 0)." |
IException::User | "RadiusASigma must be >= 0." |
IException::User | "RadiusBValue must be a valid double (blank defaults to 0)." |
IException::User | "RadiusBValue must be >= 0". |
IException::User | "RadiusBSigma must be a valid double (blank defaults to 0)." |
IException::User | "RadiusBSigma must be >= 0". |
IException::User | "RadiusCValue must be a valid double (blank defaults to 0)." |
IException::User | "RadiusCValue must be >= 0". |
IException::User | "RadiusCSigma must be a valid double (blank defaults to 0)." |
IException::User | "RadiusCSigma must be >= 0". |
IException::User | "MeanRadiusValue must be a valid double (blank defaults to 0)." |
IException::User | "MeanRadiusValue must be >= 0". |
IException::User | "MeanRadiusSigma must be a valid double (blank defaults to 0)." |
IException::User | "MeanRadiusSigma must be >= 0". |
References _FILEINFO_, AccelerationPM, AccelerationPoleDec, AccelerationPoleRA, All, Isis::Angle::Degrees, Mean, MeanRadius, Isis::Distance::Meters, None, PM, PoleDec, PoleRA, setSolveSettings(), TriaxialRadiusA, TriaxialRadiusB, TriaxialRadiusC, Isis::IException::User, VelocityPM, VelocityPoleDec, and VelocityPoleRA.
void Isis::BundleTargetBody::setSolveSettings | ( | std::set< int > | targetParameterSolveCodes, |
Angle | aprioriPoleRA, | ||
Angle | sigmaPoleRA, | ||
Angle | aprioriVelocityPoleRA, | ||
Angle | sigmaVelocityPoleRA, | ||
Angle | aprioriPoleDec, | ||
Angle | sigmaPoleDec, | ||
Angle | aprioriVelocityPoleDec, | ||
Angle | sigmaVelocityPoleDec, | ||
Angle | aprioriPM, | ||
Angle | sigmaPM, | ||
Angle | aprioriVelocityPM, | ||
Angle | sigmaVelocityPM, | ||
TargetRadiiSolveMethod | solveRadiiMethod, | ||
Distance | aprioriRadiusA, | ||
Distance | sigmaRadiusA, | ||
Distance | aprioriRadiusB, | ||
Distance | sigmaRadiusB, | ||
Distance | aprioriRadiusC, | ||
Distance | sigmaRadiusC, | ||
Distance | aprioriMeanRadius, | ||
Distance | sigmaMeanRadius ) |
Sets the solve settings for the target body.
Sets the solve settings for the target body's right ascension, declination, prime meridian, and radius based on the input values. Parameter vectors, sigma vectors and the weight vector will be filled in the following order:
pole right ascension, pole right ascension velocity, pole right ascension acceleration, pole declination, pole declination velocity, pole declination acceleration, prime meridian, prime meridian velocity, prime meridian acceleration, triaxial radius A, triaxial radius B, triaxial radius C, mean radius.
Any parameters that are not being solved for (based on targetParameterSolveCodes) will be omitted. For example, if solving for pole right ascension, pole declination, prime meridian, and mean radius; the vectors would be:
pole right ascension, pole declination, prime meridian, mean radius.
targetParameterSolveCodes | A set of TargetSolveCodes indicating what to solve for. |
aprioriPoleRA | The apriori pole right ascension angle. |
sigmaPoleRA | The apriori pole right ascension angle sigma. |
aprioriVelocityPoleRA | The apriori pole right ascension velocity. |
sigmaVelocityPoleRA | The apriori pole right ascension velocity sigma. |
aprioriPoleDec | The apriori pole declination angle. |
sigmaPoleDec | The apriori pole declination angle sigma. |
aprioriVelocityPoleDec | The apriori pole declination velocity. |
sigmaVelocityPoleDec | The apriori pole declination velocity sigma. |
aprioriPM | The apriori prime meridian angle. |
sigmaPM | The apriori prime meridian angle sigma. |
aprioriVelocityPM | The apriori prime meridian velocity. |
sigmaVelocityPM | The apriori prime meridian velocity sigma. |
solveRadiiMethod | What radius to solve for. |
aprioriRadiusA | The apriori A radius distance. |
sigmaRadiusA | The apriori A radius distance sigma. |
aprioriRadiusB | The apriori B radius distance. |
sigmaRadiusB | The apriori B Radius distance sigma. |
aprioriRadiusC | The apriori C radius distance. |
sigmaRadiusC | The apriori C radius distance sigma. |
aprioriMeanRadius | The apriori mean radius distance. |
sigmaMeanRadius | the apriori mean radius distance sigma. |
References All, Isis::Distance::kilometers(), Mean, MeanRadius, PM, PoleDec, PoleRA, Isis::Angle::Radians, solvePM(), solvePMVelocity(), solvePoleDec(), solvePoleDecVelocity(), solvePoleRA(), solvePoleRAVelocity(), TriaxialRadiusA, TriaxialRadiusB, TriaxialRadiusC, VelocityPM, VelocityPoleDec, and VelocityPoleRA.
Referenced by readFromPvl().
|
virtual |
If the mean radius will be solved for with this target body.
References MeanRadius.
Referenced by formatBundleOutputString(), and meanRadius().
|
virtual |
If the prime meridian angle will be solved for with this target body.
References PM.
Referenced by formatBundleOutputString(), and setSolveSettings().
|
virtual |
If the prime meridian acceleration will be solved for with this target body.
References AccelerationPM.
|
virtual |
If the prime meridian velocity will be solved for with this target body.
References VelocityPM.
Referenced by formatBundleOutputString(), and setSolveSettings().
|
virtual |
If the pole declination angle will be solved for with this target body.
References PoleDec.
Referenced by formatBundleOutputString(), and setSolveSettings().
|
virtual |
If the pole declination acceleration will be solved for with this target body.
References AccelerationPoleDec.
Referenced by formatBundleOutputString().
|
virtual |
If the pole declination velocity will be solved for with this target body.
References VelocityPoleDec.
Referenced by formatBundleOutputString(), and setSolveSettings().
|
virtual |
If the pole right ascension angle will be solved for with this target body.
References PoleRA.
Referenced by formatBundleOutputString(), and setSolveSettings().
|
virtual |
If the pole right ascension acceleration will be solved for with this target body.
References AccelerationPoleRA.
Referenced by formatBundleOutputString().
|
virtual |
If the pole right ascension velocity will be solved for with this target body.
References VelocityPoleRA.
Referenced by formatBundleOutputString(), and setSolveSettings().
|
virtual |
If the triaxial radii will be solved for with this target body.
References TriaxialRadiusA, TriaxialRadiusB, and TriaxialRadiusC.
Referenced by formatBundleOutputString(), localRadius(), and radii().
|
static |
Converts a QString to a TargetRadiiSolveMethod.
method | The Qstring of a solve method. |
IException::Programmer | "Unknown target body radius solution method" |
References _FILEINFO_, All, Mean, None, and Isis::IException::Programmer.
|
static |
Converts a TargetRadiiSolveMethod to a QString.
method | The TargetRadiiSolveMethod to convert. |
IException::Programmer | "Unknown target body radius solve method enum" |
References _FILEINFO_, All, Mean, None, Isis::IException::Programmer, and Isis::toString().
double Isis::BundleTargetBody::vtpv | ( | ) |
Calculates and returns the weighted sum of the squares of the corrections.
Calculates and returns the weighted sum of the squares of the corrections computed by V(T)*P*V where: V is the vector of corrections, P is the weight matrix, V(T) is the transpose of V.
References vtpv().
Referenced by vtpv().