summaryrefslogtreecommitdiffstats
path: root/src/ParallelProjectionGeometry3D.cpp
diff options
context:
space:
mode:
authorWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2014-12-02 14:20:46 +0100
committerWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2014-12-02 14:22:02 +0100
commitb3e8338a7fa4c7ed9a5954ca02fa3126aefff530 (patch)
treee68d4cfeb680ad2d491cc92a3efe5f9a4c9210c2 /src/ParallelProjectionGeometry3D.cpp
parentbdc9cc8c8c06b1bf25d24ae242cad708fc0f9b14 (diff)
downloadastra-b3e8338a7fa4c7ed9a5954ca02fa3126aefff530.tar.gz
astra-b3e8338a7fa4c7ed9a5954ca02fa3126aefff530.tar.bz2
astra-b3e8338a7fa4c7ed9a5954ca02fa3126aefff530.tar.xz
astra-b3e8338a7fa4c7ed9a5954ca02fa3126aefff530.zip
Add ProjectionGeometry3D::projectPoint for par3d and cone.
Par3d_vec and cone_vec to follow.
Diffstat (limited to 'src/ParallelProjectionGeometry3D.cpp')
-rw-r--r--src/ParallelProjectionGeometry3D.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/ParallelProjectionGeometry3D.cpp b/src/ParallelProjectionGeometry3D.cpp
index 2027f95..b5cdfb6 100644
--- a/src/ParallelProjectionGeometry3D.cpp
+++ b/src/ParallelProjectionGeometry3D.cpp
@@ -179,6 +179,22 @@ CVector3D CParallelProjectionGeometry3D::getProjectionDirection(int _iProjection
return CVector3D(fDirX, fDirY, fDirZ);
}
+void CParallelProjectionGeometry3D::projectPoint(float32 fX, float32 fY, float32 fZ,
+ int iAngleIndex,
+ float32 &fU, float32 &fV) const
+{
+ ASTRA_ASSERT(iAngleIndex >= 0);
+ ASTRA_ASSERT(iAngleIndex < m_iProjectionAngleCount);
+
+ // V (detector row)
+ fV = detectorOffsetYToRowIndexFloat(fZ);
+
+ // U (detector column)
+ float alpha = m_pfProjectionAngles[iAngleIndex];
+ // projector direction is (cos(alpha), sin(alpha))
+ fU = detectorOffsetXToColIndexFloat(cos(alpha) * fX + sin(alpha) * fY);
+}
+
CParallelProjectionGeometry2D * CParallelProjectionGeometry3D::createProjectionGeometry2D() const
{
const float32 * pfProjectionAngles = getProjectionAngles(); //new float32[getProjectionCount()];