Loading include/usgscsm/UsgsAstroFrameSensorModel.h +12 −1 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ #include <iostream> #include <vector> #include "RasterGM.h" #include <SettableEllipsoid.h> #include "CorrelationModel.h" #include "Distortion.h" #include "Utilities.h" Loading @@ -18,7 +19,7 @@ using json = nlohmann::json; class UsgsAstroFrameSensorModel : public csm::RasterGM { class UsgsAstroFrameSensorModel : public csm::RasterGM, virtual public csm::SettableEllipsoid { // UsgsAstroFramePlugin needs to access private members friend class UsgsAstroFramePlugin; Loading Loading @@ -288,6 +289,16 @@ class UsgsAstroFrameSensorModel : public csm::RasterGM { // If the argument state string is empty, the model remains unchanged. //< // Implement methods from the SettableEllipsoid class virtual csm::Ellipsoid getEllipsoid() const; //> This method returns the planetary ellipsoid. //< virtual void setEllipsoid(const csm::Ellipsoid &ellipsoid); //> This method sets the planetary ellipsoid. //< // IMPLEMENT GEOMETRICMODEL PURE VIRTUALS // See GeometricModel.h for documentation virtual csm::EcefCoord getReferencePoint() const; Loading src/UsgsAstroFrameSensorModel.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -1170,6 +1170,21 @@ std::vector<double> UsgsAstroFrameSensorModel::getCrossCovarianceMatrix( } csm::Ellipsoid UsgsAstroFrameSensorModel::getEllipsoid() const { MESSAGE_LOG(this->m_logger, "Accessing ellipsoid radii {} {}", m_majorAxis, m_minorAxis); return csm::Ellipsoid(m_majorAxis, m_minorAxis); } void UsgsAstroFrameSensorModel::setEllipsoid(const csm::Ellipsoid &ellipsoid) { MESSAGE_LOG(this->m_logger, "Setting ellipsoid radii {} {}", ellipsoid.getSemiMajorRadius(), ellipsoid.getSemiMinorRadius()); m_majorAxis = ellipsoid.getSemiMajorRadius(); m_minorAxis = ellipsoid.getSemiMinorRadius(); } void UsgsAstroFrameSensorModel::calcRotationMatrix( double m[3][3]) const { MESSAGE_LOG(this->m_logger, "Calculating rotation matrix"); Loading tests/FrameCameraTests.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,20 @@ TEST_F(OrbitalFrameSensorModel, Center) { EXPECT_DOUBLE_EQ(groundPt.z, 0); } TEST_F(FrameSensorModel, Radii) { csm::Ellipsoid ellipsoid = sensorModel->getEllipsoid(); EXPECT_DOUBLE_EQ(ellipsoid.getSemiMajorRadius(), 10); EXPECT_DOUBLE_EQ(ellipsoid.getSemiMinorRadius(), 10); } TEST_F(FrameSensorModel, SetRadii) { csm::Ellipsoid ellipsoid1(1000, 1500); sensorModel->setEllipsoid(ellipsoid1); csm::Ellipsoid ellipsoid2 = sensorModel->getEllipsoid(); EXPECT_DOUBLE_EQ(ellipsoid2.getSemiMajorRadius(), 1000); EXPECT_DOUBLE_EQ(ellipsoid2.getSemiMinorRadius(), 1500); } TEST_F(OrbitalFrameSensorModel, GroundPartials) { csm::EcefCoord groundPt(1000000.0, 0.0, 0.0); std::vector<double> partials = sensorModel->computeGroundPartials(groundPt); Loading Loading
include/usgscsm/UsgsAstroFrameSensorModel.h +12 −1 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ #include <iostream> #include <vector> #include "RasterGM.h" #include <SettableEllipsoid.h> #include "CorrelationModel.h" #include "Distortion.h" #include "Utilities.h" Loading @@ -18,7 +19,7 @@ using json = nlohmann::json; class UsgsAstroFrameSensorModel : public csm::RasterGM { class UsgsAstroFrameSensorModel : public csm::RasterGM, virtual public csm::SettableEllipsoid { // UsgsAstroFramePlugin needs to access private members friend class UsgsAstroFramePlugin; Loading Loading @@ -288,6 +289,16 @@ class UsgsAstroFrameSensorModel : public csm::RasterGM { // If the argument state string is empty, the model remains unchanged. //< // Implement methods from the SettableEllipsoid class virtual csm::Ellipsoid getEllipsoid() const; //> This method returns the planetary ellipsoid. //< virtual void setEllipsoid(const csm::Ellipsoid &ellipsoid); //> This method sets the planetary ellipsoid. //< // IMPLEMENT GEOMETRICMODEL PURE VIRTUALS // See GeometricModel.h for documentation virtual csm::EcefCoord getReferencePoint() const; Loading
src/UsgsAstroFrameSensorModel.cpp +15 −0 Original line number Diff line number Diff line Loading @@ -1170,6 +1170,21 @@ std::vector<double> UsgsAstroFrameSensorModel::getCrossCovarianceMatrix( } csm::Ellipsoid UsgsAstroFrameSensorModel::getEllipsoid() const { MESSAGE_LOG(this->m_logger, "Accessing ellipsoid radii {} {}", m_majorAxis, m_minorAxis); return csm::Ellipsoid(m_majorAxis, m_minorAxis); } void UsgsAstroFrameSensorModel::setEllipsoid(const csm::Ellipsoid &ellipsoid) { MESSAGE_LOG(this->m_logger, "Setting ellipsoid radii {} {}", ellipsoid.getSemiMajorRadius(), ellipsoid.getSemiMinorRadius()); m_majorAxis = ellipsoid.getSemiMajorRadius(); m_minorAxis = ellipsoid.getSemiMinorRadius(); } void UsgsAstroFrameSensorModel::calcRotationMatrix( double m[3][3]) const { MESSAGE_LOG(this->m_logger, "Calculating rotation matrix"); Loading
tests/FrameCameraTests.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,20 @@ TEST_F(OrbitalFrameSensorModel, Center) { EXPECT_DOUBLE_EQ(groundPt.z, 0); } TEST_F(FrameSensorModel, Radii) { csm::Ellipsoid ellipsoid = sensorModel->getEllipsoid(); EXPECT_DOUBLE_EQ(ellipsoid.getSemiMajorRadius(), 10); EXPECT_DOUBLE_EQ(ellipsoid.getSemiMinorRadius(), 10); } TEST_F(FrameSensorModel, SetRadii) { csm::Ellipsoid ellipsoid1(1000, 1500); sensorModel->setEllipsoid(ellipsoid1); csm::Ellipsoid ellipsoid2 = sensorModel->getEllipsoid(); EXPECT_DOUBLE_EQ(ellipsoid2.getSemiMajorRadius(), 1000); EXPECT_DOUBLE_EQ(ellipsoid2.getSemiMinorRadius(), 1500); } TEST_F(OrbitalFrameSensorModel, GroundPartials) { csm::EcefCoord groundPt(1000000.0, 0.0, 0.0); std::vector<double> partials = sensorModel->computeGroundPartials(groundPt); Loading