CircularDetector.surface¶
-
CircularDetector.
surface
(self, param)[source]¶ Return the detector surface point corresponding to
param
.For a parameter
phi
, the returned point is given bysurf = R * radius * (cos(phi), -sin(phi)) + t
where
R
is a rotation matrix andt
is a translation vector. Note that increase ofphi
corresponds to rotation in the clockwise direction, by analogy to flat detectors.- Parameters
- paramfloat or
array-like
Parameter value(s) at which to evaluate.
- paramfloat or
- Returns
- point
numpy.ndarray
Vector(s) pointing from the origin to the detector surface point at
param
. Ifparam
is a single parameter, the returned array has shape(2,)
, otherwiseparam.shape + (2,)
.
- point
Examples
The method works with a single parameter, resulting in a single vector:
>>> part = odl.uniform_partition(-np.pi / 2, np.pi / 2, 10) >>> det = CircularDetector(part, axis=[1, 0], radius=2) >>> np.allclose(det.surface(0), [0, 0]) True
It is also vectorized, i.e., it can be called with multiple parameters at once (or an n-dimensional array of parameters):
>>> np.round(det.surface([-np.pi / 2, 0, np.pi / 2]), 10) array([[-2., -2.], [ 0., 0.], [ 2., -2.]])
>>> det.surface(np.zeros((4, 5))).shape (4, 5, 2)