Template Class Frustum¶
Defined in File Frustum.hpp
Class Documentation¶
-
template<typename
value_t, size_tDIM, size_tSIDES>
classActs::Frustum¶ 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.
- Template Parameters
value_t: The floating point value to useDIM: The number of dimensions of ambient spaceSIDES: The number of sides (= side planes) the frustum has (exactly 2 in 2D, minimum 3 in 3D)
Public Types
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_angleis defined as the angle between opposing side planes. The opening angle needs to be < pi.- Parameters
origin: The origin of the frustumdir: The direction of the frustumopening_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_angleis defined as the angle between opposing side planes. The opening angle needs to be < pi.- Parameters
origin: The origin of the frustumdir: The direction of the frustumopening_angle: The opening angle
-
const VertexType &
dir() const¶ Getter for the direction of the frustum.
- Return
The direction of the frustum
-
template<size_t
D= DIM, std::enable_if_t<D == 3, int> = 0>
voiddraw(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 helperfar_distance: The distance to the virtual “far plane” at which point the side planes terminate visually.
-
const std::array<VertexType, SIDES + 1> &
normals() const¶ Getter for the normal vectors of the planes defining this frustum.
- Return
Array containing the normal vectors for all planes.
- Note
The size of the array that is returned is fixed to
number of sides
-
const VertexType &
origin() const¶ Getter for the oriogin of the frustum.
- Return
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 tow: The width of the output SVGh: The height of the output SVGfar_distance: The distance to the virtual “far line” at which point the side lines terminate visually.unit: Multiplicative factor to apply to internal distances