diff --git a/src/UsgsAstroLsSensorModel.cpp b/src/UsgsAstroLsSensorModel.cpp index dc0b7801308167affbbe89d12a36f92ddfe20b78..2bf46b9c60bdc6d5bef44356e55b5b89312d361e 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 80de543b7bcbe24be65cf348e9e5eddea3833e52..f4a07e68b9322319683477ef7d8b1da915a37a67 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); +}