diff Framework/Toolbox/DicomInstanceParameters.cpp @ 1161:19b1c8caade4 broker

fix sagittal geometry
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 19 Nov 2019 17:30:05 +0100
parents acb399643945
children 17a92c39c633
line wrap: on
line diff
--- a/Framework/Toolbox/DicomInstanceParameters.cpp	Tue Nov 19 12:52:07 2019 +0100
+++ b/Framework/Toolbox/DicomInstanceParameters.cpp	Tue Nov 19 17:30:05 2019 +0100
@@ -470,4 +470,33 @@
 
     return (value * factor + offset);
   }
+
+
+  bool DicomInstanceParameters::Data::ComputeRegularSpacing(double& spacing) const
+  {
+    if (frameOffsets_.size() == 0)  // Not a RT-DOSE
+    {
+      return false;
+    }
+    else if (frameOffsets_.size() == 1)
+    {
+      spacing = 1;   // Edge case: RT-DOSE with one single frame
+      return true;
+    }
+    else
+    {
+      spacing = std::abs(frameOffsets_[1] - frameOffsets_[0]);
+
+      for (size_t i = 1; i + 1 < frameOffsets_.size(); i++)
+      {
+        double s = frameOffsets_[i + 1] - frameOffsets_[i];
+        if (!LinearAlgebra::IsNear(spacing, s, 0.001))
+        {
+          return false;
+        }
+      }
+      
+      return true;
+    }
+  }
 }