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_angle
is 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_angle
is 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