Commit 0d85bb56 authored by Jesse Mapel's avatar Jesse Mapel
Browse files

Modified BundleObservation so that the unitTest no longer seg faults when using no images.

parent 45f70669
Loading
Loading
Loading
Loading
+39 −11
Original line number Diff line number Diff line
@@ -379,11 +379,11 @@ namespace Isis {
   * Initializes the exterior orientation 
   *
   * @return @b bool Returns true upon successful intialization
   *
   * @internal
   *   @todo Should this always return true?
   */
  bool BundleObservation::initializeExteriorOrientation() {
    if (size() == 0) {
      return false;
    }

    BundleImageQsp image = at(0);

@@ -909,7 +909,13 @@ namespace Isis {
   * @return @b int Returns the number of position parameters
   */
  int BundleObservation::numberPositionParameters() {
    int numSegments = m_instrumentPosition->numPolynomialSegments();
    int numSegments;
    if(m_instrumentPosition) {
      numSegments = m_instrumentPosition->numPolynomialSegments();
    }
    else {
      numSegments = m_solveSettings->numberSpkPolySegments();
    }
    int numCoefficients = m_solveSettings->numberCameraPositionCoefficientsSolved();

    return 3.0 * numSegments * numCoefficients;
@@ -922,7 +928,13 @@ namespace Isis {
   * @return @b int Returns the number of pointing parameters
   */
  int BundleObservation::numberPointingParameters() {
    int numSegments = m_instrumentRotation->numPolynomialSegments();
    int numSegments;
    if (m_instrumentRotation) {
      numSegments = m_instrumentRotation->numPolynomialSegments();
    }
    else {
      numSegments = m_solveSettings->numberCkPolySegments();
    }
    int numCoefficients = m_solveSettings->numberCameraAngleCoefficientsSolved();

    if (!m_solveSettings->solveTwist()) {
@@ -1044,11 +1056,19 @@ namespace Isis {
    QString templateString = "\n    Position Segment Number: %1\n"
                             "         Segment Start Time: %2\n"
                             "           Segment End Time: %3\n";
    if (m_instrumentPosition) {
      std::vector<double> polyKnots = m_instrumentPosition->polynomialKnots();
      if (polyKnots.front() != -DBL_MAX &&
          polyKnots.back() != DBL_MAX) {
        return templateString.arg(segmentIndex + 1)
                             .arg(polyKnots[segmentIndex], -20, 'f', 5)
                             .arg(polyKnots[segmentIndex + 1], -20, 'f', 5);
      }
    }
    return templateString.arg(segmentIndex + 1)
                         .arg("N/A")
                         .arg("N/A");
  }


  /**
@@ -1064,11 +1084,19 @@ namespace Isis {
    QString templateString = "\n    Pointing Segment Number: %1\n"
                             "         Segment Start Time: %2\n"
                             "           Segment End Time: %3\n";
    if (m_instrumentRotation) {
      std::vector<double> polyKnots = m_instrumentRotation->polynomialKnots();
      if (polyKnots.front() != -DBL_MAX &&
          polyKnots.back() != DBL_MAX) {
        return templateString.arg(segmentIndex + 1)
                             .arg(polyKnots[segmentIndex], -20, 'f', 5)
                             .arg(polyKnots[segmentIndex + 1], -20, 'f', 5);
      }
    }
    return templateString.arg(segmentIndex + 1)
                         .arg("N/A")
                         .arg("N/A");
  }


  /**
+30 −19
Original line number Diff line number Diff line
@@ -411,27 +411,31 @@ int main(int argc, char *argv[]) {
    BundleObservationSolveSettings bossFromBo = *bo2.solveSettings();
    printXml(bossFromBo);
    qDebug() << "    output bundle observation...";
    qDebug().noquote() << bo2.formatBundleOutputString(true,true);
    qDebug().noquote() << bo2.formatBundleOutputString(false,true);
    qDebug().noquote() << bo2.formatBundleOutputString(false);
    qDebug().noquote() << bo2.formatBundleOutputString(true);
    qDebug().noquote() << bo2.formatPositionSegmentHeader(0);
    qDebug().noquote() << bo2.formatPositionOutputString(0,true,true);
    qDebug().noquote() << bo2.formatPositionOutputString(0,false,true);
    qDebug().noquote() << bo2.formatPositionOutputString(0,false);
    qDebug().noquote() << bo2.formatPositionOutputString(0,true);
    qDebug().noquote() << bo2.formatRotationOutputString(0, true,true);
    qDebug().noquote() << bo2.formatRotationOutputString(0, false,true);
    qDebug().noquote() << bo2.formatRotationOutputString(0, false);
    qDebug().noquote() << bo2.formatRotationOutputString(0, true);
    qDebug().noquote() << bo2.formatPointingSegmentHeader(0);
    qDebug().noquote() << bo2.formatPointingOutputString(0,true,true);
    qDebug().noquote() << bo2.formatPointingOutputString(0,false,true);
    qDebug().noquote() << bo2.formatPointingOutputString(0,false);
    qDebug().noquote() << bo2.formatPointingOutputString(0,true);
    qDebug() << "    Set solve settings using with TWIST=FALSE...";
    bo2.setSolveSettings(bossToFill);
    bossFromBo = *bo2.solveSettings();
    printXml(bossFromBo);
    qDebug() << "    output bundle observation...";
    qDebug().noquote() << bo2.formatBundleOutputString(true,true);
    qDebug().noquote() << bo2.formatBundleOutputString(false,true);
    qDebug().noquote() << bo2.formatBundleOutputString(false);
    qDebug().noquote() << bo2.formatBundleOutputString(true);
    qDebug().noquote() << bo2.formatPositionSegmentHeader(0);
    qDebug().noquote() << bo2.formatPositionOutputString(0,true,true);
    qDebug().noquote() << bo2.formatPositionOutputString(0,false,true);
    qDebug().noquote() << bo2.formatPositionOutputString(0,false);
    qDebug().noquote() << bo2.formatPositionOutputString(0,true);
    qDebug().noquote() << bo2.formatPointingSegmentHeader(0);
    qDebug().noquote() << bo2.formatPointingOutputString(0,true,true);
    qDebug().noquote() << bo2.formatPointingOutputString(0,false,true);
    qDebug().noquote() << bo2.formatPointingOutputString(0,false);
    qDebug().noquote() << bo2.formatPointingOutputString(0,true);



@@ -480,9 +484,16 @@ int main(int argc, char *argv[]) {
    // bo3.initializeBodyRotation(); //Seg fault

    qDebug() << "    output bundle observation...";
    qDebug().noquote() << bo3.formatBundleOutputString(false,true);
    qDebug().noquote() << bo3.formatBundleOutputString(false);
    qDebug().noquote() << bo3.formatBundleOutputString(true,true);
    qDebug().noquote() << bo3.formatPositionSegmentHeader(0);
    qDebug().noquote() << bo3.formatPositionOutputString(0,true,true);
    qDebug().noquote() << bo3.formatPositionOutputString(0,false,true);
    qDebug().noquote() << bo3.formatPositionOutputString(0,false);
    qDebug().noquote() << bo3.formatPositionOutputString(0,true);
    qDebug().noquote() << bo3.formatPointingSegmentHeader(0);
    qDebug().noquote() << bo3.formatPointingOutputString(0,true,true);
    qDebug().noquote() << bo3.formatPointingOutputString(0,false,true);
    qDebug().noquote() << bo3.formatPointingOutputString(0,false);
    qDebug().noquote() << bo3.formatPointingOutputString(0,true);
    qDebug() << "init exterior orientiation successful?  "
             << toString(bo3.initializeExteriorOrientation());
    //TODO: We should not have to catch an exception here, we need to use an observation