From cd1b6427db4ac11d25ce2200fcd6857ad4a815ee Mon Sep 17 00:00:00 2001 From: "K. Williams" <kewilliams@usgs.gov> Date: Wed, 22 Aug 2018 15:34:45 -0700 Subject: [PATCH] Test camera model (#99) * added observer x-distance test. * added rotation tests. * removed extra comments * changed to use pi constant --- tests/FrameCameraTests.cpp | 94 +++++++++++++++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) diff --git a/tests/FrameCameraTests.cpp b/tests/FrameCameraTests.cpp index 028134e..03e84db 100644 --- a/tests/FrameCameraTests.cpp +++ b/tests/FrameCameraTests.cpp @@ -250,4 +250,96 @@ TEST_F(FrameIsdTest, X1e9_SlightlyOffCenter) { EXPECT_NEAR(groundPt.y, 0.0, 1e-4); EXPECT_NEAR(groundPt.z, 1.99999200e+06, 1e-4); -} \ No newline at end of file +} + +//Angle rotations: +TEST_F(FrameIsdTest, Rotation_omegaPi_Center) { + std::string key = "omega"; + std::ostringstream strval; + strval << std::setprecision(20) << M_PI; + isd.clearParams(key); + isd.addParam(key,strval.str()); + UsgsAstroFramePlugin frameCameraPlugin; + + csm::Model *model = frameCameraPlugin.constructModelFromISD( + isd, + "USGS_ASTRO_FRAME_SENSOR_MODEL"); + + UsgsAstroFrameSensorModel* sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model); + + ASSERT_NE(sensorModel, nullptr); + csm::ImageCoord imagePt(7.5, 7.5); + csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0); + EXPECT_NEAR(groundPt.x, -10.0, 1e-8); + EXPECT_NEAR(groundPt.y, 0.0, 1e-8); + EXPECT_NEAR(groundPt.z, 0.0, 1e-8); + +} +TEST_F(FrameIsdTest, Rotation_NPole_Center) { + std::string key = "phi"; + std::ostringstream strval; + strval << std::setprecision(20) << -M_PI; + isd.clearParams(key); + isd.addParam(key,strval.str()); + key = "x_sensor_origin"; + std::string newValue = "0.0"; + isd.clearParams(key); + isd.addParam(key,newValue); + key = "y_sensor_origin"; + newValue = "0.0"; + isd.clearParams(key); + isd.addParam(key,newValue); + key = "z_sensor_origin"; + newValue = "1000.0"; + isd.clearParams(key); + isd.addParam(key,newValue); + UsgsAstroFramePlugin frameCameraPlugin; + + csm::Model *model = frameCameraPlugin.constructModelFromISD( + isd, + "USGS_ASTRO_FRAME_SENSOR_MODEL"); + + UsgsAstroFrameSensorModel* sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model); + + ASSERT_NE(sensorModel, nullptr); + csm::ImageCoord imagePt(7.5, 7.5); + csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0); + EXPECT_NEAR(groundPt.x, 0.0, 1e-8); + EXPECT_NEAR(groundPt.y, 0.0, 1e-8); + EXPECT_NEAR(groundPt.z, 10.0, 1e-8); + +} +TEST_F(FrameIsdTest, Rotation_SPole_Center) { + std::string key = "phi"; + std::string newValue = "0.0"; + isd.clearParams(key); + isd.addParam(key,newValue); + key = "x_sensor_origin"; + newValue = "0.0"; + isd.clearParams(key); + isd.addParam(key,newValue); + key = "y_sensor_origin"; + newValue = "0.0"; + isd.clearParams(key); + isd.addParam(key,newValue); + key = "z_sensor_origin"; + newValue = "-1000.0"; + isd.clearParams(key); + isd.addParam(key,newValue); + UsgsAstroFramePlugin frameCameraPlugin; + + csm::Model *model = frameCameraPlugin.constructModelFromISD( + isd, + "USGS_ASTRO_FRAME_SENSOR_MODEL"); + + UsgsAstroFrameSensorModel* sensorModel = dynamic_cast<UsgsAstroFrameSensorModel *>(model); + + ASSERT_NE(sensorModel, nullptr); + csm::ImageCoord imagePt(7.5, 7.5); + csm::EcefCoord groundPt = sensorModel->imageToGround(imagePt, 0.0); + EXPECT_NEAR(groundPt.x, 0.0, 1e-8); + EXPECT_NEAR(groundPt.y, 0.0, 1e-8); + EXPECT_NEAR(groundPt.z, -10.0, 1e-8); + +} + -- GitLab