-Scanner::collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, bool bStoreAtViewPosition, const int trace, SGP* pSGP)
+Scanner::collectProjections (Projections& proj, const Phantom& phm, const int iStartView,
+ const int iNumViews, const int iOffsetView, bool bStoreAtViewPosition,
+ const int trace, SGP* pSGP)
+{
+ int iStorageOffset = (bStoreAtViewPosition ? iStartView : 0);
+ collectProjections (proj, phm, iStartView, iNumViews, iOffsetView, iStorageOffset, trace, pSGP);
+}
+
+static void mtx2_offset_rot (GRFMTX_2D m, double angle, double x, double y) {
+ GRFMTX_2D temp;
+ xlat_mtx2 (m, -x, -y);
+ rot_mtx2 (temp, angle);
+ mult_mtx2 (m, temp, m);
+ xlat_mtx2 (temp, x, y);
+ mult_mtx2 (m, temp, m);
+}
+
+void
+Scanner::collectProjections (Projections& proj, const Phantom& phm, const int iStartView,
+ const int iNumViews, const int iOffsetView, int iStorageOffset,
+ const int trace, SGP* pSGP)