Mercurial > hg > orthanc-stone
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; + } + } }