Commit b0d27b2e authored by Cole Neubauer's avatar Cole Neubauer
Browse files

Made changes from feedback on PR

parent 3b8a88ba
Loading
Loading
Loading
Loading
+13 −9
Original line number Diff line number Diff line
#include "EquatorialCylindricalShape.h"

#include <QDebug>
#include <QVector>

#include <algorithm>
#include <cfloat>
@@ -20,6 +21,8 @@
// #include "LinearAlgebra.h"
#include "Longitude.h"
#include "NaifStatus.h"
#include "Spice.h"
#include "ShapeModel.h"
#include "SpecialPixel.h"
#include "SurfacePoint.h"
#include "Table.h"
@@ -419,15 +422,16 @@ namespace Isis {
  /**
   * Override of virtual function for intersectEllipsoid
   *
   * param &a SpiceDouble reference to be set
   *
   * param &b SpiceDouble reference to be set
   *
   * param &c SpiceDouble reference to be set
   * @return tuple of three SpiceDoubles: SpiceDouble a, SpiceDouble b, SpiceDouble c
   */
  void EquatorialCylindricalShape::setTargetRadii(SpiceDouble &a, SpiceDouble &b, SpiceDouble &c) {
    a = m_maxRadius->kilometers();
    b = m_maxRadius->kilometers();
    c = m_maxRadius->kilometers();
  QVector<SpiceDouble> EquatorialCylindricalShape::setTargetRadii() {
    QVector<SpiceDouble> spiceVector(3);
    SpiceDouble a = m_maxRadius->kilometers();
    SpiceDouble b = m_maxRadius->kilometers();
    SpiceDouble c = m_maxRadius->kilometers();
    spiceVector.insert(0, a);
    spiceVector.insert(1, b);
    spiceVector.insert(2, c);
    return spiceVector;
  }
}
+8 −5
Original line number Diff line number Diff line
@@ -24,6 +24,9 @@

#include "DemShape.h"

#include <QVector>

#include "Spice.h"
namespace Isis {
  class Pvl;

@@ -48,10 +51,10 @@ namespace Isis {
   *                           and attempt the iterative method even when the ellipsoid is not
   *                           intersected. Fixes #1438
   *   @history 2018-02-05 Cole Neubauer - Added the setTargetRadii virtual method so that the
   *                           intersectEllipsoid method can use a the MaximumRadius found in the
   *                           intersectEllipsoid method can use the MaximumRadius found in the
   *                           ShapeModelStatistics group of the labels (often written during a run of
   *                           demprep) as a starting radius for the ellipsoid as opposed to the
   *                           default radius of the target.
   *                           default radius of the target. Fixes #5242
   */
  class EquatorialCylindricalShape : public DemShape {
    public:
@@ -66,7 +69,7 @@ namespace Isis {
                            std::vector<double> lookDirection);

    protected:
      virtual void setTargetRadii(SpiceDouble &a, SpiceDouble &b, SpiceDouble &c);
      virtual QVector<SpiceDouble> setTargetRadii(); // returns a QVector of SpiceDouble


    private:
+18 −14
Original line number Diff line number Diff line
#include "ShapeModel.h"

#include <QDebug>
#include <QVector>

#include <algorithm>
#include <cfloat>
@@ -198,21 +199,23 @@ namespace Isis {
    return acos(angle) * RAD2DEG;
  }


  /**
   * Sets the parameters to the Target radii
   *
   * param &a SpiceDouble reference to be set
   * Override of virtual function for intersectEllipsoid
   *
   * param &b SpiceDouble reference to be set
   *
   * param &c SpiceDouble reference to be set
   * @return tuple of three SpiceDoubles: SpiceDouble a, SpiceDouble b, SpiceDouble c
   */
  void ShapeModel::setTargetRadii(SpiceDouble &a, SpiceDouble &b, SpiceDouble &c) {
  QVector<SpiceDouble> ShapeModel::setTargetRadii() {
    QVector<SpiceDouble> spiceVector(3);
    // get target radii
    std::vector<Distance> radii = targetRadii();
    a = radii[0].kilometers();
    b = radii[1].kilometers();
    c = radii[2].kilometers();
    SpiceDouble a = radii[0].kilometers();
    SpiceDouble b = radii[1].kilometers();
    SpiceDouble c = radii[2].kilometers();
    spiceVector.insert(0, a);
    spiceVector.insert(1, b);
    spiceVector.insert(2, c);
    return spiceVector;
  }


@@ -290,10 +293,11 @@ namespace Isis {
    memcpy(lookB,&observerLookVectorToTarget[0], 3*sizeof(double));

    // get target radii
    SpiceDouble a;
    SpiceDouble b;
    SpiceDouble c;
    setTargetRadii(a, b, c);
    QVector<SpiceDouble> spiceVector = setTargetRadii();

    SpiceDouble a = spiceVector.at(0);
    SpiceDouble b = spiceVector.at(1);
    SpiceDouble c = spiceVector.at(2);

    // check if observer look vector intersects the target
    SpiceDouble intersectionPoint[3];
+14 −17
Original line number Diff line number Diff line
@@ -23,10 +23,10 @@
 */

#include <vector>
#include <QVector>

#include "Spice.h"


template<class T> class QVector;

class QString;
@@ -81,7 +81,7 @@ namespace Isis {
   *                           called from intersectEllipsoid. This is to avoid
   *                           redundant code that comes with having intersectEllipsoid be
   *                           virtual as the only code that was changed will now be handled
   *                            in setTargetRadii Fixes m05242 
   *                           in setTargetRadii Fixes #5242
   */
  class ShapeModel {
    public:
@@ -172,17 +172,14 @@ namespace Isis {
                                 const std::vector<double> lookDirection);

    protected:
      // Virtual function to be called in intersectEllipsoid to avoid redundant code
      virtual void setTargetRadii(SpiceDouble &a, SpiceDouble &b, SpiceDouble &c);

      virtual QVector<SpiceDouble> setTargetRadii(); // returns a QVector of SpiceDouble

      // Set the normal (surface or local) of the current intersection point
      void setNormal(const std::vector<double>);
      void setNormal(const double a, const double b, const double c);

      // accessor and setter for m_hasEllipsoidIntersection
      // accessor for m_hasEllipsoidIntersection
      bool hasEllipsoidIntersection();
      // void setHasEllipsoidIntersection(bool status);

      // Set shape name
      void setName(QString name);