Commit 79e3145c authored by Janet Barrett's avatar Janet Barrett
Browse files

(PROG) Added instrumentBodyFixedPosition and instrumentBodyFixedVelocity...

(PROG) Added instrumentBodyFixedPosition and instrumentBodyFixedVelocity methods to the Spice class. Fixes #1684.

git-svn-id: http://subversion.wr.usgs.gov/repos/prog/isis3/trunk@5644 41f8697f-d340-4b68-9986-7bafba869bb8
parent e543c921
Loading
Loading
Loading
Loading
+26 −7
Changes for isis/src/base/objs/Spice/Spice.cpp: 26 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -709,6 +709,19 @@ namespace Isis {
   * @throw Isis::iException::Programmer - "You must call SetTime first"
   */
  void Spice::instrumentPosition(double p[3]) const {
    instrumentBodyFixedPosition(p);
  }

  /**
   * Returns the spacecraft position in body-fixed frame km units.
   *
   * @param p[] Spacecraft position
   *
   * @see setTime()
   *
   * @throw Isis::iException::Programmer - "You must call SetTime first"
   */
  void Spice::instrumentBodyFixedPosition(double p[3]) const {
    if (m_et == NULL) {
      std::string msg = "You must call SetTime first";
      throw IException(IException::Programmer, msg, _FILEINFO_);
@@ -720,24 +733,30 @@ namespace Isis {
    p[2] = sB[2];
  }


  /**
   * Returns the spacecraft velocity in body-fixed frame km/sec units.
   *
   * @param v[] Spacecraft velocity
   */
  void Spice::instrumentVelocity(double v[3]) const {
  void Spice::instrumentBodyFixedVelocity(double v[3]) const {
    if (m_et == NULL) {
      std::string msg = "You must call SetTime first";
      throw IException(IException::Programmer, msg, _FILEINFO_);
    }

    std::vector<double> vB = m_bodyRotation->ReferenceVector(m_instrumentPosition->Velocity());
    v[0] = vB[0];
    v[1] = vB[1];
    v[2] = vB[2];
  }
    std::vector<double> state;
    state.push_back(m_instrumentPosition->Coordinate()[0]);
    state.push_back(m_instrumentPosition->Coordinate()[1]);
    state.push_back(m_instrumentPosition->Coordinate()[2]);
    state.push_back(m_instrumentPosition->Velocity()[0]);
    state.push_back(m_instrumentPosition->Velocity()[1]);
    state.push_back(m_instrumentPosition->Velocity()[2]);

    std::vector<double> vB = m_bodyRotation->ReferenceVector(state);
    v[0] = vB[3];
    v[1] = vB[4];
    v[2] = vB[5];
  }

  /**
    * Returns the ephemeris time in seconds which was used to obtain the
+4 −1
Changes for isis/src/base/objs/Spice/Spice.h: 4 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -262,6 +262,8 @@ namespace Isis {
   *                           which changes the prime meridian to {0, 0, 0}.  This insures
   *                           the longitude values are calculated in the inertial system
   *                           relative to the ascending node of the ring plane.  Fixes #1757.
   *   @history 2013-12-17 Janet Barrett - Added the instrumentBodyFixedPosition and
   *                           instrumentBodyFixedVelocity methods. Fixes #1684.
   *                           
   */
  class Spice {
@@ -276,10 +278,11 @@ namespace Isis {
      // Methods
      void setTime(const iTime &time);
      void instrumentPosition(double p[3]) const;
      void instrumentBodyFixedPosition(double p[3]) const;
      void sunPosition(double p[3]) const;
      double targetCenterDistance() const;
      Longitude solarLongitude();
      void instrumentVelocity(double v[3]) const;
      void instrumentBodyFixedVelocity(double v[3]) const;
      iTime time() const;

      void radii(Distance r[3]) const;
+20 −20
Changes for isis/src/base/objs/Spice/Spice.truth: 20 added lines, 20 removed lines.
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@ Testing without cache ...
Time             = -69382819
Clock Time (ET)  = 264289285.9
Spacecraft          (B) = -2036.01629 -2120.808621 2008.687495
Spacecraft Velocity (B) = -2.089191159 -1.697268689 -3.895161847
Spacecraft Velocity (B) = -2.239518699 -1.552951414 -3.895161846
Sun                 (B) = -176801920.6 113794008.3 -33706771.9
BJ is 
0.6561782269
@@ -64,7 +64,7 @@ SubSolar = -9.107720959 147.2336839
Time             = -69382784.89
Clock Time (ET)  = 264289285.9
Spacecraft          (B) = -2111.404257 -2172.427377 1874.729627
Spacecraft Velocity (B) = -2.026180942 -1.622999314 -3.958312123
Spacecraft Velocity (B) = -2.180167332 -1.473338376 -3.958312123
Sun                 (B) = -176526606.5 114220422.9 -33707109.25
BJ is 
0.6576477714
@@ -91,7 +91,7 @@ SubSolar = -9.107815409 147.0953692
Time             = -69382750.78
Clock Time (ET)  = 264289285.9
Spacecraft          (B) = -2184.722528 -2221.309928 1738.693913
Spacecraft Velocity (B) = -1.960759914 -1.547430485 -4.016954876
Spacecraft Velocity (B) = -2.118211205 -1.392572588 -4.016954876
Sun                 (B) = -176250264 114646171.3 -33707446.59
BJ is 
0.6591134712
@@ -118,7 +118,7 @@ SubSolar = -9.107909859 146.9570545
Time             = -69382716.67
Clock Time (ET)  = 264289285.9
Spacecraft          (B) = -2255.886692 -2267.422128 1600.737485
Spacecraft Velocity (B) = -1.893192811 -1.470861242 -4.070898387
Spacecraft Velocity (B) = -2.053912636 -1.310959074 -4.070898387
Sun                 (B) = -175972894.7 115071251.1 -33707783.94
BJ is 
0.6605753178
@@ -145,7 +145,7 @@ SubSolar = -9.108004309 146.8187398
Time             = -69382682.56
Clock Time (ET)  = 264289285.9
Spacecraft          (B) = -2324.821503 -2310.740416 1461.023378
Spacecraft Velocity (B) = -1.823756613 -1.393601682 -4.119988675
Spacecraft Velocity (B) = -1.987546933 -1.228813265 -4.119988674
Sun                 (B) = -175694500.2 115495660 -33708121.29
BJ is 
0.6620333026
@@ -172,7 +172,7 @@ SubSolar = -9.108098759 146.6804252
Time             = -69382648.44
Clock Time (ET)  = 264289285.9
Spacecraft          (B) = -2391.461346 -2351.252049 1319.719221
Spacecraft Velocity (B) = -1.752742386 -1.3159638 -4.164109004
Spacecraft Velocity (B) = -1.919404258 -1.146451805 -4.164109004
Sun                 (B) = -175415082.2 115919395.2 -33708458.63
BJ is 
0.6634874171
@@ -199,7 +199,7 @@ SubSolar = -9.108193209 146.5421105
Time             = -69382614.33
Clock Time (ET)  = 264289285.9
Spacecraft          (B) = -2455.750911 -2388.95502 1176.996136
Spacecraft Velocity (B) = -1.68046736 -1.238257835 -4.203171537
Spacecraft Velocity (B) = -1.849801701 -1.064188856 -4.203171536
Sun                 (B) = -175134642.1 116342454.5 -33708795.98
BJ is 
0.6649376527
@@ -226,7 +226,7 @@ SubSolar = -9.108287659 146.4037958
Time             = -69382580.22
Clock Time (ET)  = 264289285.9
Spacecraft          (B) = -2517.646325 -2423.858162 1033.02746
Spacecraft Velocity (B) = -1.607282465 -1.160802798 -4.237141488
Spacecraft Velocity (B) = -1.779090817 -0.9823465371 -4.237141488
Sun                 (B) = -174853181.8 116764835.4 -33709133.32
BJ is 
0.6663840011
@@ -253,7 +253,7 @@ SubSolar = -9.108382109 146.2654811
Time             = -69382546.11
Clock Time (ET)  = 264289285.9
Spacecraft          (B) = -2577.115866 -2455.981253 887.9862654
Spacecraft Velocity (B) = -1.533539138 -1.083910621 -4.266071131
Spacecraft Velocity (B) = -1.707624444 -0.9012390288 -4.266071131
Sun                 (B) = -174570702.8 117186535.3 -33709470.66
BJ is 
0.6678264538
@@ -280,7 +280,7 @@ SubSolar = -9.108476558 146.1271665
Time             = -69382512
Clock Time (ET)  = 264289285.9
Spacecraft          (B) = -2634.139267 -2485.35422 742.042555
Spacecraft Velocity (B) = -1.459550389 -1.007857765 -4.290081123
Spacecraft Velocity (B) = -1.635717716 -0.8211442299 -4.290081123
Sun                 (B) = -174287206.7 117607551.9 -33709808.01
BJ is 
0.6692650023
@@ -308,7 +308,7 @@ SubSolar = -9.108571008 145.9888518
Testing with cache ... 
Time           = -69382819
Spacecraft (B) = -2036.01629 -2120.808621 2008.687495
Spacecraft Velocity (B) = -2.089191159 -1.697268689 -3.895161847
Spacecraft Velocity (B) = -2.239518699 -1.552951414 -3.895161846
Sun        (B) = -176801920.6 113794008.3 -33706771.9
BJ is 
0.6561782269
@@ -335,7 +335,7 @@ Cache End Time = -69382546.11
Target Center Distance = 3560.62031
Time           = -69382784.89
Spacecraft (B) = -2111.404257 -2172.427377 1874.729627
Spacecraft Velocity (B) = -2.026180942 -1.622999314 -3.958312123
Spacecraft Velocity (B) = -2.180167332 -1.473338376 -3.958312123
Sun        (B) = -176526606.5 114220422.8 -33707109.24
BJ is 
0.6576477714
@@ -362,7 +362,7 @@ Cache End Time = -69382546.11
Target Center Distance = 3562.594535
Time           = -69382750.78
Spacecraft (B) = -2184.722528 -2221.309928 1738.693913
Spacecraft Velocity (B) = -1.960759914 -1.547430485 -4.016954876
Spacecraft Velocity (B) = -2.118211205 -1.392572588 -4.016954876
Sun        (B) = -176250264 114646171.3 -33707446.59
BJ is 
0.6591134712
@@ -389,7 +389,7 @@ Cache End Time = -69382546.11
Target Center Distance = 3567.952753
Time           = -69382716.67
Spacecraft (B) = -2255.886692 -2267.422128 1600.737485
Spacecraft Velocity (B) = -1.893192811 -1.470861242 -4.070898387
Spacecraft Velocity (B) = -2.053912636 -1.310959074 -4.070898387
Sun        (B) = -175972894.7 115071251.1 -33707783.94
BJ is 
0.6605753178
@@ -416,7 +416,7 @@ Cache End Time = -69382546.11
Target Center Distance = 3576.672808
Time           = -69382682.56
Spacecraft (B) = -2324.821503 -2310.740416 1461.023378
Spacecraft Velocity (B) = -1.823756613 -1.393601682 -4.119988675
Spacecraft Velocity (B) = -1.987546933 -1.228813265 -4.119988674
Sun        (B) = -175694500.2 115495659.9 -33708121.28
BJ is 
0.6620333026
@@ -443,7 +443,7 @@ Cache End Time = -69382546.11
Target Center Distance = 3588.719215
Time           = -69382648.44
Spacecraft (B) = -2391.461346 -2351.252049 1319.719221
Spacecraft Velocity (B) = -1.752742386 -1.3159638 -4.164109004
Spacecraft Velocity (B) = -1.919404258 -1.146451805 -4.164109004
Sun        (B) = -175415082.1 115919395.2 -33708458.63
BJ is 
0.6634874171
@@ -470,7 +470,7 @@ Cache End Time = -69382546.11
Target Center Distance = 3604.043894
Time           = -69382614.33
Spacecraft (B) = -2455.750911 -2388.95502 1176.996136
Spacecraft Velocity (B) = -1.68046736 -1.238257835 -4.203171537
Spacecraft Velocity (B) = -1.849801701 -1.064188856 -4.203171536
Sun        (B) = -175134642.1 116342454.5 -33708795.97
BJ is 
0.6649376527
@@ -497,7 +497,7 @@ Cache End Time = -69382546.11
Target Center Distance = 3622.58727
Time           = -69382580.22
Spacecraft (B) = -2517.646325 -2423.858162 1033.02746
Spacecraft Velocity (B) = -1.607282465 -1.160802798 -4.237141488
Spacecraft Velocity (B) = -1.779090817 -0.9823465371 -4.237141488
Sun        (B) = -174853181.8 116764835.4 -33709133.32
BJ is 
0.6663840011
@@ -524,7 +524,7 @@ Cache End Time = -69382546.11
Target Center Distance = 3644.280058
Time           = -69382546.11
Spacecraft (B) = -2577.115866 -2455.981253 887.9862654
Spacecraft Velocity (B) = -1.533539138 -1.083910621 -4.266071131
Spacecraft Velocity (B) = -1.707624444 -0.9012390288 -4.266071131
Sun        (B) = -174570702.8 117186535.3 -33709470.66
BJ is 
0.6678264538
@@ -551,7 +551,7 @@ Cache End Time = -69382546.11
Target Center Distance = 3669.044795
Time           = -69382512
Spacecraft (B) = -2634.139267 -2485.35422 742.042555
Spacecraft Velocity (B) = -1.459550389 -1.007857765 -4.290081123
Spacecraft Velocity (B) = -1.635717716 -0.8211442299 -4.290081123
Sun        (B) = -174287206.7 117607551.9 -33709808.01
BJ is 
0.6692650023
+2 −2
Changes for isis/src/base/objs/Spice/unitTest.cpp: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -214,7 +214,7 @@ int main(int argc, char *argv[]) {
    spi.instrumentPosition(p);
    cout << "Spacecraft          (B) = " << p[0] << " " << p[1] << " " << p[2] << endl;
    double v[3];
    spi.instrumentVelocity(v);
    spi.instrumentBodyFixedVelocity(v);
    cout << "Spacecraft Velocity (B) = " << v[0] << " " << v[1] << " " << v[2] << endl;
    spi.sunPosition(p);
    cout << "Sun                 (B) = " << p[0] << " " << p[1] << " " << p[2] << endl;
@@ -239,7 +239,7 @@ int main(int argc, char *argv[]) {
    spi.instrumentPosition(p);
    cout << "Spacecraft (B) = " << p[0] << " " << p[1] << " " << p[2] << endl;
    double v[3];
    spi.instrumentVelocity(v);
    spi.instrumentBodyFixedVelocity(v);
    cout << "Spacecraft Velocity (B) = " << v[0] << " " << v[1] << " " << v[2] << endl;
    spi.sunPosition(p);
    cout << "Sun        (B) = " << p[0] << " " << p[1] << " " << p[2] << endl;