Skip to content
Snippets Groups Projects
Select Git revision
  • 3cd4fbc29ceb32fb5ead6c6d7ddc42fd96f869b5
  • main default protected
  • Kelvinrr-patch-3
  • radius_update
  • revert-616-apollo_pan
  • vims
  • 0.10
  • Kelvinrr-patch-2
  • revert-563-minirf_fix
  • Kelvinrr-patch-1
  • 0.9
  • acpaquette-patch-3
  • acpaquette-patch-2
  • acpaquette-patch-1
  • spiceql
  • ci-coverage
  • 0.10.0
  • 0.9.1
  • 0.9.0
  • 0.8.7
  • 0.8.8
  • 0.8.6
  • 0.8.3
  • 0.8.4
  • 0.8.5
  • 0.8.2
  • 0.8.1
  • 0.8.0
  • 0.7.3
  • 0.7.2
  • 0.7.1
  • 0.7.0
  • 0.6.5
  • 0.6.4
  • 0.6.3
  • 0.6.2
36 results

setup.py

Blame
  • FrameCameraTests.cpp 2.21 KiB
    #include "UsgsAstroFramePlugin.h"
    #include "UsgsAstroFrameSensorModel.h"
    
    #include <json.hpp>
    
    #include <sstream>
    #include <fstream>
    
    #include <gtest/gtest.h>
    
    using json = nlohmann::json;
    
    class FrameSensorModel : public ::testing::Test {
       protected:
    
          UsgsAstroFrameSensorModel *sensorModel;
    
          void SetUp() override {
             sensorModel = NULL;
             std::ifstream isdFile("data/simpleFramerISD.json");
             json jsonIsd = json::parse(isdFile);
             csm::Isd isd;
             for (json::iterator it = jsonIsd.begin(); it != jsonIsd.end(); ++it) {
                json jsonValue = it.value();
                if (jsonValue.size() > 1) {
                   for (int i = 0; i < jsonValue.size(); i++) {
                      isd.addParam(it.key(), jsonValue[i].dump());
                   }
                }
                else {
                   isd.addParam(it.key(), jsonValue.dump());
                }
             }
             isdFile.close();
    
             UsgsAstroFramePlugin frameCameraPlugin;
             
             csm::Model *model = frameCameraPlugin.constructModelFromISD(
                   isd,
                   "USGS_ASTRO_FRAME_SENSOR_MODEL");
             
             sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model);
             
             ASSERT_NE(sensorModel, nullptr);
          }
    
          void TearDown() override {
             if (sensorModel) {
                delete sensorModel;
                sensorModel = NULL;
             }
          }
    };
    
    TEST_F(FrameSensorModel, Center) {
       csm::ImageCoord imagePt(7.0, 7.0);
       csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
       EXPECT_NEAR(groundPt.x, 10.0, 1e-8);
       EXPECT_NEAR(groundPt.y, 0, 1e-8);
       EXPECT_NEAR(groundPt.z, 0, 1e-8);
    }
    
    TEST_F(FrameSensorModel, OffBody) {
       csm::ImageCoord imagePt(14.5, -0.5);
       csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
       EXPECT_NEAR(groundPt.x, 0.44979759, 1e-8);
       EXPECT_NEAR(groundPt.y, -14.99325304, 1e-8);
       EXPECT_NEAR(groundPt.z, 14.99325304, 1e-8);
    }
    
    TEST_F(FrameSensorModel, SlightlyOffCenter) {
       csm::ImageCoord imagePt(7.0, 6.0);
       csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0);
       EXPECT_NEAR(groundPt.x, 9.80194018, 1e-8);
       EXPECT_NEAR(groundPt.y, 0, 1e-8);
       EXPECT_NEAR(groundPt.z, 1.98039612, 1e-8);
    }