From b2ea3a26deabb0f16487ba05a7917ab392b04cfa Mon Sep 17 00:00:00 2001 From: Jesse Mapel <jmapel@usgs.gov> Date: Wed, 15 Jan 2020 15:40:11 -0700 Subject: [PATCH] Added adjustable focal length back (#258) * Added adjustable focal length back * Added adjustable focal length test * Better test --- src/UsgsAstroLsSensorModel.cpp | 5 +++-- tests/LineScanCameraTests.cpp | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/UsgsAstroLsSensorModel.cpp b/src/UsgsAstroLsSensorModel.cpp index dc0b780..2bf46b9 100644 --- a/src/UsgsAstroLsSensorModel.cpp +++ b/src/UsgsAstroLsSensorModel.cpp @@ -1994,7 +1994,8 @@ void UsgsAstroLsSensorModel::losToEcf( // Define imaging ray (look vector) in camera space double cameraLook[3]; - createCameraLookVector(undistortedFocalPlaneX, undistortedFocalPlaneY, m_zDirection, m_focalLength, cameraLook); + createCameraLookVector(undistortedFocalPlaneX, undistortedFocalPlaneY, + m_zDirection, m_focalLength + getValue(15, adj), cameraLook); MESSAGE_LOG(m_logger, "losToEcf: uncorrected camera look vector {} {} {}", cameraLook[0], cameraLook[1], cameraLook[2]) @@ -2501,7 +2502,7 @@ csm::ImageCoord UsgsAstroLsSensorModel::computeViewingPixel( adjustedLookX, adjustedLookY, adjustedLookZ) // Convert to focal plane coordinate - double lookScale = m_focalLength / adjustedLookZ; + double lookScale = (m_focalLength + getValue(15, adj)) / adjustedLookZ; double focalX = adjustedLookX * lookScale; double focalY = adjustedLookY * lookScale; double distortedFocalX, distortedFocalY; diff --git a/tests/LineScanCameraTests.cpp b/tests/LineScanCameraTests.cpp index 80de543..f4a07e6 100644 --- a/tests/LineScanCameraTests.cpp +++ b/tests/LineScanCameraTests.cpp @@ -252,3 +252,12 @@ TEST_F(OrbitalLineScanSensorModel, ReferenceDateTime) { std::string date = sensorModel->getReferenceDateAndTime(); EXPECT_EQ(date, "20000101T001639"); } + +TEST_F(ConstVelocityLineScanSensorModel, FocalLengthAdjustment) { + csm::ImageCoord imagePt(8.5, 4.0); + sensorModel->setParameterValue(15, -45); + csm::EcefLocus locus = sensorModel->imageToRemoteImagingLocus(imagePt); + EXPECT_DOUBLE_EQ(locus.direction.x, -5.0 / sqrt(5 * 5 + 0.4 * 0.4)); + EXPECT_DOUBLE_EQ(locus.direction.y, -0.4 / sqrt(5 * 5 + 0.4 * 0.4)); + EXPECT_DOUBLE_EQ(locus.direction.z, 0.0); +} -- GitLab