File Frustum.hpp¶
-
namespace Acts
Set the Geometry Context PLUGIN.
Set the Calibration Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedMaterialMap and to avoid code duplication.
Set the Mangetic Field Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedBFieldMap and to avoid code duplication.
Currently implemented for the two most common formats: rz and xyz.
-
template<typename value_t, size_t DIM, size_t SIDES>
class Frustum - #include <Acts/Utilities/Frustum.hpp>
Class representing a frustum shape.
The frustum is defined using an origin, a direction and an opening angle. These parameters are then used to calculate a number of side planes, each having a position and a normal vector. The “near plane” is assumed to coincide with the origin point, and the normal with the “direction” of the frustum. No far plane is defined.
- tparam value_t
The floating point value to use
- tparam DIM
The number of dimensions of ambient space
- tparam SIDES
The number of sides (= side planes) the frustum has (exactly 2 in 2D, minimum 3 in 3D)
Public Types
-
using value_type = value_t
Re expose the value type.
Public Functions
-
template<size_t D = DIM, std::enable_if_t<D == 2, int> = 0>
Frustum(const VertexType &origin, const VertexType &dir, value_type opening_angle) Constructor for the 2D case.
Note
The
opening_angle
is defined as the angle between opposing side planes. The opening angle needs to be < pi.- Parameters
origin – The origin of the frustum
dir – The direction of the frustum
opening_angle – The opening angle
-
template<size_t D = DIM, std::enable_if_t<D == 3, int> = 0>
Frustum(const VertexType &origin, const VertexType &dir, value_type opening_angle) Constructor for the 3D case.
Note
The
opening_angle
is defined as the angle between opposing side planes. The opening angle needs to be < pi.- Parameters
origin – The origin of the frustum
dir – The direction of the frustum
opening_angle – The opening angle
-
inline const VertexType &dir() const
Getter for the direction of the frustum.
- Returns
The direction of the frustum
-
template<size_t D = DIM, std::enable_if_t<D == 3, int> = 0>
void draw(IVisualization3D &helper, value_type far_distance = 10) const Draw a representation of this frustum using a visualization helper.
Note
This is only available for the 3D case.
- Parameters
helper – The visualization helper
far_distance – The distance to the virtual “far plane” at which point the side planes terminate visually.
-
inline const std::array<VertexType, SIDES + 1> &normals() const
Getter for the normal vectors of the planes defining this frustum.
Note
The size of the array that is returned is fixed to
number of sides + 1
- Returns
Array containing the normal vectors for all planes.
-
inline const VertexType &origin() const
Getter for the oriogin of the frustum.
- Returns
The origin of the frustum
-
template<size_t D = DIM, std::enable_if_t<D == 2, int> = 0>
std::ostream &svg(std::ostream &os, value_type w, value_type h, value_type far_distance = 1, value_type unit = 20.) const Draw a representation of this frustum as an SVG string to an outstream.
Note
This is only available for the 2D case.
- Parameters
os – The out stream to write to
w – The width of the output SVG
h – The height of the output SVG
far_distance – The distance to the virtual “far line” at which point the side lines terminate visually.
unit – Multiplicative factor to apply to internal distances
-
Frustum<value_t, DIM, SIDES> transformed(const transform_type &trf) const
Transforms this frustum using a given transform and returns a new instance.
- Parameters
trf – The transform to apply
- Returns
A copy of this frustum with the transform
trf
applied.
Public Static Attributes
-
static constexpr size_t dim = DIM
Re expose the number of dimensions.
-
static constexpr size_t sides = SIDES
Re expose the number of sides.
Private Functions
-
inline Frustum(const VertexType &origin, std::array<VertexType, SIDES + 1> normals)¶
-
template<typename value_t, size_t DIM, size_t SIDES>