- double detPosFloor = floor (curDetPos);
- int iDetPos = iDetCenter + static_cast<int>(detPosFloor);
- double frac = curDetPos - detPosFloor; // fraction distance from det
- if (iDetPos > 0 && iDetPos < nDet - 1)
- *pImCol++ += filteredProj[iDetPos] + (frac * (filteredProj[iDetPos+1] - filteredProj[iDetPos]));
- } else if (interpType = Backprojector::INTERP_CUBIC) {
- double p = iDetCenter + curDetPos; // position along detector
- if (p >= 0 && p < nDet)
+ double detPosFloor = floor (detPos);
+ int iDetPos = static_cast<int>(detPosFloor);
+ double frac = detPos - detPosFloor; // fraction distance from det
+ if (iDetPos >= 0 && iDetPos <= iLastDet) {
+ *pImCol++ += filteredProj[iDetPos] + (frac * deltaFilteredProj[iDetPos]);
+ }
+ } else if (interpType == Backprojector::INTERP_CUBIC) {
+ double p = detPos; // position along detector
+ if (p >= 0 && p < nDet) {