Parallel3dAxisGeometry.det_axes

Parallel3dAxisGeometry.det_axes(self, angle)[source]

Return the detector axes tuple at angle.

Parameters
anglefloat or array-like

Angle(s) in radians describing the counter-clockwise rotation of the detector around axis.

Returns
axesnumpy.ndarray

Unit vectors along which the detector is aligned. If angle is a single parameter, the returned array has shape (2, 3), otherwise broadcast(*angle).shape + (2, 3).

Notes

To get an array that enumerates the detector axes in the first dimension, move the second-to-last axis to the first position:

axes = det_axes(angle) axes_enumeration = np.moveaxis(deriv, -2, 0)

Examples

Calling the method with a single angle produces a (2, 3) array of vertically stacked vectors:

>>> apart = odl.uniform_partition(0, np.pi, 10)
>>> dpart = odl.uniform_partition([-1, -1], [1, 1], (20, 20))
>>> geom = Parallel3dAxisGeometry(apart, dpart)
>>> geom.det_axes(0)
array([[ 1.,  0.,  0.],
       [ 0.,  0.,  1.]])
>>> np.allclose(geom.det_axes(np.pi / 2), [[0, 1, 0],
...                                        [0, 0, 1]])
True

The method is vectorized, i.e., it can be called with multiple angles at once (or n-dimensional arrays of parameters):

>>> np.allclose(geom.det_axes([0, np.pi / 2]),
...             [[[1, 0, 0],
...               [0, 0, 1]],
...              [[0, 1, 0],
...               [0, 0, 1]]])
True
>>> geom.det_axes(np.zeros((4, 5))).shape
(4, 5, 2, 3)