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