summaryrefslogtreecommitdiffstats
path: root/src/ConeVecProjectionGeometry3D.cpp
diff options
context:
space:
mode:
authorWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2014-12-03 11:44:20 +0100
committerWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2014-12-03 16:13:38 +0100
commit899faabba87628698fbc02a06f4a91ba6469fd8d (patch)
tree25c784cc6f2720d9e00530c239a632e8483a9e9f /src/ConeVecProjectionGeometry3D.cpp
parentb3e8338a7fa4c7ed9a5954ca02fa3126aefff530 (diff)
downloadastra-899faabba87628698fbc02a06f4a91ba6469fd8d.tar.gz
astra-899faabba87628698fbc02a06f4a91ba6469fd8d.tar.bz2
astra-899faabba87628698fbc02a06f4a91ba6469fd8d.tar.xz
astra-899faabba87628698fbc02a06f4a91ba6469fd8d.zip
Move BP coordinate transformation to utility function
Diffstat (limited to 'src/ConeVecProjectionGeometry3D.cpp')
-rw-r--r--src/ConeVecProjectionGeometry3D.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/ConeVecProjectionGeometry3D.cpp b/src/ConeVecProjectionGeometry3D.cpp
index 29d84b7..79f56c4 100644
--- a/src/ConeVecProjectionGeometry3D.cpp
+++ b/src/ConeVecProjectionGeometry3D.cpp
@@ -224,9 +224,20 @@ void CConeVecProjectionGeometry3D::projectPoint(float32 fX, float32 fY, float32
int iAngleIndex,
float32 &fU, float32 &fV) const
{
-#warning implementme
- fU = 0.0f/0.0f;
- fV = 0.0f/0.0f;
+ ASTRA_ASSERT(iAngleIndex >= 0);
+ ASTRA_ASSERT(iAngleIndex < m_iProjectionAngleCount);
+
+ double fUX, fUY, fUZ, fUC;
+ double fVX, fVY, fVZ, fVC;
+ double fDX, fDY, fDZ, fDC;
+
+ computeBP_UV_Coeffs(m_pProjectionAngles[iAngleIndex],
+ fUX, fUY, fUZ, fUC, fVX, fVY, fVZ, fVC, fDX, fDY, fDZ, fDC);
+
+ // The -0.5f shifts from corner to center of detector pixels
+ double fD = fDX*fX + fDY*fY + fDZ*fZ + fDC;
+ fU = (fUX*fX + fUY*fY + fUZ*fZ + fUC) / fD - 0.5f;
+ fV = (fVX*fX + fVY*fY + fVZ*fZ + fVC) / fD - 0.5f;
}