Tatooine
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
tatooine::axis_aligned_bounding_box< Real, NumDimensions > Struct Template Reference

#include <axis_aligned_bounding_box.h>

Inheritance diagram for tatooine::axis_aligned_bounding_box< Real, NumDimensions >:
[legend]
Collaboration diagram for tatooine::axis_aligned_bounding_box< Real, NumDimensions >:
[legend]

Public Types

using real_type = Real
 
using this_type = axis_aligned_bounding_box< Real, NumDimensions >
 
using vec_type = vec< Real, NumDimensions >
 
using pos_type = vec_type
 
- Public Types inherited from tatooine::detail::aabb_ray_intersectable_parent< axis_aligned_bounding_box< Real, NumDimensions >, Real, NumDimensions >
using parent_type = ray_intersectable< Real, NumDimensions >
 
using intersection_type = intersection< real_type, NumDimensions >
 
using optional_intersection_type = std::optional< intersection_type >
 
using ray_type = ray< real_type, NumDimensions >
 
- Public Types inherited from tatooine::ray_intersectable< Real, NumDimensions >
using real_type = Real
 
using intersection_type = intersection< real_type, NumDimensions >
 
using optional_intersection_type = std::optional< intersection_type >
 
using ray_type = ray< real_type, NumDimensions >
 

Public Member Functions

constexpr axis_aligned_bounding_box ()
 
constexpr axis_aligned_bounding_box (axis_aligned_bounding_box const &other)=default
 
constexpr axis_aligned_bounding_box (axis_aligned_bounding_box &&other) noexcept=default
 
constexpr auto operator= (axis_aligned_bounding_box const &other) -> axis_aligned_bounding_box &=default
 
constexpr auto operator= (axis_aligned_bounding_box &&other) noexcept -> axis_aligned_bounding_box &=default
 
 ~axis_aligned_bounding_box ()=default
 
template<typename Real0 , typename Real1 >
constexpr axis_aligned_bounding_box (vec< Real0, NumDimensions > &&min, vec< Real1, NumDimensions > &&max) noexcept
 
template<typename Real0 , typename Real1 >
constexpr axis_aligned_bounding_box (vec< Real0, NumDimensions > const &min, vec< Real1, NumDimensions > const &max)
 
template<typename Tensor0 , typename Tensor1 , typename Real0 , typename Real1 >
constexpr axis_aligned_bounding_box (base_tensor< Tensor0, Real0, NumDimensions > const &min, base_tensor< Tensor1, Real1, NumDimensions > const &max)
 
auto constexpr min () const -> auto const &
 
auto constexpr min () -> auto &
 
auto constexpr min (std::size_t i) const -> auto const &
 
auto constexpr min (std::size_t i) -> auto &
 
auto constexpr max () const -> auto const &
 
auto constexpr max () -> auto &
 
auto constexpr max (std::size_t i) const -> auto const &
 
auto constexpr max (std::size_t i) -> auto &
 
auto constexpr extents () const
 
auto constexpr extent (std::size_t i) const
 
auto constexpr area () const
 
auto constexpr volume () const
 
auto constexpr center () const
 
auto constexpr center (std::size_t const i) const
 
auto constexpr is_inside (pos_type const &p) const
 
constexpr auto is_rectangle_inside (vec< Real, 2 > x0, vec< Real, 2 > x1, vec< Real, 2 > x2, vec< Real, 2 > x3) const
 
constexpr auto is_simplex_inside (vec< Real, 2 > const &x0, vec< Real, 2 > const &x1, vec< Real, 2 > const &x2) const
 
constexpr auto is_simplex_inside (vec< Real, 3 > x0, vec< Real, 3 > x1, vec< Real, 3 > x2) const
 
constexpr auto is_simplex_inside (vec< Real, 3 > x0, vec< Real, 3 > x1, vec< Real, 3 > x2, vec< Real, 3 > x3) const
 
constexpr auto operator+= (pos_type const &point)
 
constexpr auto reset ()
 
constexpr auto add_dimension (Real const min, Real const max) const
 
template<typename RandomEngine = std::mt19937_64>
auto random_point (RandomEngine &&random_engine=RandomEngine{ std::random_device{}()}) const
 
auto write_vtk (filesystem::path const &path)
 
- Public Member Functions inherited from tatooine::detail::aabb_ray_intersectable_parent< axis_aligned_bounding_box< Real, NumDimensions >, Real, NumDimensions >
auto as_aabb () const -> auto const &
 
auto check_intersection (ray_type const &r, Real const=0) const -> optional_intersection_type override
 
- Public Member Functions inherited from tatooine::ray_intersectable< Real, NumDimensions >
virtual ~ray_intersectable ()=default
 
virtual auto check_intersection (ray_type const &r, real_type const min_t) const -> optional_intersection_type=0
 

Static Public Member Functions

static constexpr auto num_dimensions () -> std::size_t
 
static constexpr auto infinite ()
 

Private Member Functions

template<std::size_t... Is>
auto constexpr area (std::index_sequence< Is... >) const
 
template<std::size_t... Is>
auto constexpr volume (std::index_sequence< Is... >) const
 

Private Attributes

pos_type m_min
 
pos_type m_max
 

Member Typedef Documentation

◆ pos_type

template<typename Real , std::size_t NumDimensions>
using tatooine::axis_aligned_bounding_box< Real, NumDimensions >::pos_type = vec_type

◆ real_type

template<typename Real , std::size_t NumDimensions>
using tatooine::axis_aligned_bounding_box< Real, NumDimensions >::real_type = Real

◆ this_type

template<typename Real , std::size_t NumDimensions>
using tatooine::axis_aligned_bounding_box< Real, NumDimensions >::this_type = axis_aligned_bounding_box<Real, NumDimensions>

◆ vec_type

template<typename Real , std::size_t NumDimensions>
using tatooine::axis_aligned_bounding_box< Real, NumDimensions >::vec_type = vec<Real, NumDimensions>

Constructor & Destructor Documentation

◆ axis_aligned_bounding_box() [1/6]

template<typename Real , std::size_t NumDimensions>
constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::axis_aligned_bounding_box ( )
inlineconstexpr

◆ axis_aligned_bounding_box() [2/6]

template<typename Real , std::size_t NumDimensions>
constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::axis_aligned_bounding_box ( axis_aligned_bounding_box< Real, NumDimensions > const &  other)
constexprdefault

◆ axis_aligned_bounding_box() [3/6]

template<typename Real , std::size_t NumDimensions>
constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::axis_aligned_bounding_box ( axis_aligned_bounding_box< Real, NumDimensions > &&  other)
constexprdefaultnoexcept

◆ ~axis_aligned_bounding_box()

template<typename Real , std::size_t NumDimensions>
tatooine::axis_aligned_bounding_box< Real, NumDimensions >::~axis_aligned_bounding_box ( )
default

◆ axis_aligned_bounding_box() [4/6]

template<typename Real , std::size_t NumDimensions>
template<typename Real0 , typename Real1 >
constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::axis_aligned_bounding_box ( vec< Real0, NumDimensions > &&  min,
vec< Real1, NumDimensions > &&  max 
)
inlineconstexprnoexcept

◆ axis_aligned_bounding_box() [5/6]

template<typename Real , std::size_t NumDimensions>
template<typename Real0 , typename Real1 >
constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::axis_aligned_bounding_box ( vec< Real0, NumDimensions > const &  min,
vec< Real1, NumDimensions > const &  max 
)
inlineconstexpr

◆ axis_aligned_bounding_box() [6/6]

template<typename Real , std::size_t NumDimensions>
template<typename Tensor0 , typename Tensor1 , typename Real0 , typename Real1 >
constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::axis_aligned_bounding_box ( base_tensor< Tensor0, Real0, NumDimensions > const &  min,
base_tensor< Tensor1, Real1, NumDimensions > const &  max 
)
inlineconstexpr

Member Function Documentation

◆ add_dimension()

template<typename Real , std::size_t NumDimensions>
constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::add_dimension ( Real const  min,
Real const  max 
) const
inlineconstexpr

◆ area() [1/2]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::area ( ) const
inlineconstexpr

◆ area() [2/2]

template<typename Real , std::size_t NumDimensions>
template<std::size_t... Is>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::area ( std::index_sequence< Is... >  ) const
inlineconstexprprivate

◆ center() [1/2]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::center ( ) const
inlineconstexpr

◆ center() [2/2]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::center ( std::size_t const  i) const
inlineconstexpr

◆ extent()

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::extent ( std::size_t  i) const
inlineconstexpr

◆ extents()

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::extents ( ) const
inlineconstexpr

◆ infinite()

template<typename Real , std::size_t NumDimensions>
static constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::infinite ( )
inlinestaticconstexpr

◆ is_inside()

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::is_inside ( pos_type const &  p) const
inlineconstexpr

◆ is_rectangle_inside()

template<typename Real , std::size_t NumDimensions>
constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::is_rectangle_inside ( vec< Real, 2 >  x0,
vec< Real, 2 >  x1,
vec< Real, 2 >  x2,
vec< Real, 2 >  x3 
) const
inlineconstexpr

x3 +-----------—+ x2 | | | | x0 +-----------—+ x1

◆ is_simplex_inside() [1/3]

template<typename Real , std::size_t NumDimensions>
constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::is_simplex_inside ( vec< Real, 2 > const &  x0,
vec< Real, 2 > const &  x1,
vec< Real, 2 > const &  x2 
) const
inlineconstexpr

◆ is_simplex_inside() [2/3]

template<typename Real , std::size_t NumDimensions>
constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::is_simplex_inside ( vec< Real, 3 >  x0,
vec< Real, 3 >  x1,
vec< Real, 3 >  x2 
) const
inlineconstexpr

◆ is_simplex_inside() [3/3]

template<typename Real , std::size_t NumDimensions>
constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::is_simplex_inside ( vec< Real, 3 >  x0,
vec< Real, 3 >  x1,
vec< Real, 3 >  x2,
vec< Real, 3 >  x3 
) const
inlineconstexpr

◆ max() [1/4]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::max ( ) -> auto&
inlineconstexpr

◆ max() [2/4]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::max ( ) const -> auto const&
inlineconstexpr

◆ max() [3/4]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::max ( std::size_t  i) -> auto&
inlineconstexpr

◆ max() [4/4]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::max ( std::size_t  i) const -> auto const&
inlineconstexpr

◆ min() [1/4]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::min ( ) -> auto&
inlineconstexpr

◆ min() [2/4]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::min ( ) const -> auto const&
inlineconstexpr

◆ min() [3/4]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::min ( std::size_t  i) -> auto&
inlineconstexpr

◆ min() [4/4]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::min ( std::size_t  i) const -> auto const&
inlineconstexpr

◆ num_dimensions()

template<typename Real , std::size_t NumDimensions>
static constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::num_dimensions ( ) -> std::size_t
inlinestaticconstexpr

◆ operator+=()

template<typename Real , std::size_t NumDimensions>
constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::operator+= ( pos_type const &  point)
inlineconstexpr

◆ operator=() [1/2]

template<typename Real , std::size_t NumDimensions>
constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::operator= ( axis_aligned_bounding_box< Real, NumDimensions > &&  other) -> axis_aligned_bounding_box &=default
constexprdefaultnoexcept

◆ operator=() [2/2]

template<typename Real , std::size_t NumDimensions>
constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::operator= ( axis_aligned_bounding_box< Real, NumDimensions > const &  other) -> axis_aligned_bounding_box &=default
constexprdefault

◆ random_point()

template<typename Real , std::size_t NumDimensions>
template<typename RandomEngine = std::mt19937_64>
auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::random_point ( RandomEngine &&  random_engine = RandomEngine{ std::random_device{}()}) const
inline

◆ reset()

template<typename Real , std::size_t NumDimensions>
constexpr auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::reset ( )
inlineconstexpr

◆ volume() [1/2]

template<typename Real , std::size_t NumDimensions>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::volume ( ) const
inlineconstexpr

◆ volume() [2/2]

template<typename Real , std::size_t NumDimensions>
template<std::size_t... Is>
auto constexpr tatooine::axis_aligned_bounding_box< Real, NumDimensions >::volume ( std::index_sequence< Is... >  ) const
inlineconstexprprivate

◆ write_vtk()

template<typename Real , std::size_t NumDimensions>
auto tatooine::axis_aligned_bounding_box< Real, NumDimensions >::write_vtk ( filesystem::path const &  path)
inline

Member Data Documentation

◆ m_max

template<typename Real , std::size_t NumDimensions>
pos_type tatooine::axis_aligned_bounding_box< Real, NumDimensions >::m_max
private

◆ m_min

template<typename Real , std::size_t NumDimensions>
pos_type tatooine::axis_aligned_bounding_box< Real, NumDimensions >::m_min
private

The documentation for this struct was generated from the following file: