diff --git a/include/usgscsm/Utilities.h b/include/usgscsm/Utilities.h
index 3a94c73a3a7551720291114fc37987cc62fc7596..374d68c8442361a9f821bb3600e73082d9e9a660 100644
--- a/include/usgscsm/Utilities.h
+++ b/include/usgscsm/Utilities.h
@@ -53,6 +53,16 @@ void lagrangeInterp (
   const int&     i_order,
   double*        valueVector);
 
+double pixelResolution(
+  const csm::EcefCoord& groundPt,
+  const csm::EcefCoord& sensorPos,
+  const double&         sampleOrigin,
+  const double&         lineOrigin,
+  const double&         sampleSumming,
+  const double&         startingSample,
+  const double          iTransS[],
+  const double          iTransL[]);
+
 // Methods for checking/accessing the ISD
 
 double metric_conversion(double val, std::string from, std::string to="m");
diff --git a/src/Utilities.cpp b/src/Utilities.cpp
index 5d5efb39697cbbac30d5f3d54bd52d40aea19c71..a46b1e154d4c7bcbb4f38d6545f3d794f32e3bde 100644
--- a/src/Utilities.cpp
+++ b/src/Utilities.cpp
@@ -235,6 +235,26 @@ void lagrangeInterp(
   }
 }
 
+// Compute the pixel reolution at a ground point
+double pixelResolution(
+  const csm::EcefCoord& groundPt,
+  const csm::EcefCoord& sensorPos,
+  const double&         sampleOrigin,
+  const double&         lineOrigin,
+  const double&         sampleSumming,
+  const double&         startingSample,
+  const double          iTransS[],
+  const double          iTransL[]) {
+  double x1, y1, x2, y2;
+  computeDistortedFocalPlaneCoordinates(
+        0.0, 0.0,
+        sampleOrigin,
+        lineOrigin,
+        sampleSumming,
+
+  );
+}
+
 // convert a measurement
 double metric_conversion(double val, std::string from, std::string to) {
     json typemap = {