Tatooine
Public Types | Public Member Functions | Private Attributes | List of all members
tatooine::geometry::sphere< Real, N > Struct Template Reference

#include <sphere.h>

Inheritance diagram for tatooine::geometry::sphere< Real, N >:
[legend]
Collaboration diagram for tatooine::geometry::sphere< Real, N >:
[legend]

Public Types

using this_type = sphere< Real, N >
 
using parent_type = ray_intersectable< Real, N >
 
using vec_t = vec< Real, N >
 
- Public Types inherited from tatooine::ray_intersectable< Real, N >
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

 sphere (Real const radius=1)
 
 sphere (Real const radius, vec_t const &center)
 
 sphere (vec_t const &center, Real const radius)
 
 sphere (sphere const &)=default
 
 sphere (sphere &&)=default
 
sphereoperator= (sphere const &)=default
 
sphereoperator= (sphere &&)=default
 
auto check_intersection (ray< Real, N > const &r, Real const min_t=0) const -> optional_intersection_type override
 
constexpr auto center () const -> auto const &
 
constexpr auto center () -> auto &
 
constexpr auto radius () const
 
constexpr auto radius () -> auto &
 
template<typename RandomEngine = std::mt19937_64>
auto random_point (RandomEngine &&eng=RandomEngine{ std::random_device{}()}) const
 
template<typename RandReal , typename RandEngine >
auto random_points (size_t const n, random::uniform< RandReal, RandEngine > &rand) const
 
template<typename RandEngine = std::mt19937_64>
auto random_points (size_t const n) const
 
- Public Member Functions inherited from tatooine::ray_intersectable< Real, N >
virtual ~ray_intersectable ()=default
 
virtual auto check_intersection (ray_type const &r, real_type const min_t) const -> optional_intersection_type=0
 

Private Attributes

vec_t m_center = vec_t::zeros()
 
Real m_radius = 1
 

Member Typedef Documentation

◆ parent_type

template<floating_point Real, size_t N>
using tatooine::geometry::sphere< Real, N >::parent_type = ray_intersectable<Real, N>

◆ this_type

template<floating_point Real, size_t N>
using tatooine::geometry::sphere< Real, N >::this_type = sphere<Real, N>

◆ vec_t

template<floating_point Real, size_t N>
using tatooine::geometry::sphere< Real, N >::vec_t = vec<Real, N>

Constructor & Destructor Documentation

◆ sphere() [1/5]

template<floating_point Real, size_t N>
tatooine::geometry::sphere< Real, N >::sphere ( Real const  radius = 1)
inlineexplicit

◆ sphere() [2/5]

template<floating_point Real, size_t N>
tatooine::geometry::sphere< Real, N >::sphere ( Real const  radius,
vec_t const &  center 
)
inline

◆ sphere() [3/5]

template<floating_point Real, size_t N>
tatooine::geometry::sphere< Real, N >::sphere ( vec_t const &  center,
Real const  radius 
)
inline

◆ sphere() [4/5]

template<floating_point Real, size_t N>
tatooine::geometry::sphere< Real, N >::sphere ( sphere< Real, N > const &  )
default

◆ sphere() [5/5]

template<floating_point Real, size_t N>
tatooine::geometry::sphere< Real, N >::sphere ( sphere< Real, N > &&  )
default

Member Function Documentation

◆ center() [1/2]

template<floating_point Real, size_t N>
constexpr auto tatooine::geometry::sphere< Real, N >::center ( ) -> auto&
inlineconstexpr

◆ center() [2/2]

template<floating_point Real, size_t N>
constexpr auto tatooine::geometry::sphere< Real, N >::center ( ) const -> auto const&
inlineconstexpr

◆ check_intersection()

template<floating_point Real, size_t N>
auto tatooine::geometry::sphere< Real, N >::check_intersection ( ray< Real, N > const &  r,
Real const  min_t = 0 
) const -> optional_intersection_type
inlineoverride

◆ operator=() [1/2]

template<floating_point Real, size_t N>
sphere & tatooine::geometry::sphere< Real, N >::operator= ( sphere< Real, N > &&  )
default

◆ operator=() [2/2]

template<floating_point Real, size_t N>
sphere & tatooine::geometry::sphere< Real, N >::operator= ( sphere< Real, N > const &  )
default

◆ radius() [1/2]

template<floating_point Real, size_t N>
constexpr auto tatooine::geometry::sphere< Real, N >::radius ( ) -> auto&
inlineconstexpr

◆ radius() [2/2]

template<floating_point Real, size_t N>
constexpr auto tatooine::geometry::sphere< Real, N >::radius ( ) const
inlineconstexpr

◆ random_point()

template<floating_point Real, size_t N>
template<typename RandomEngine = std::mt19937_64>
auto tatooine::geometry::sphere< Real, N >::random_point ( RandomEngine &&  eng = RandomEngine{ std::random_device{}()}) const
inline

◆ random_points() [1/2]

template<floating_point Real, size_t N>
template<typename RandEngine = std::mt19937_64>
auto tatooine::geometry::sphere< Real, N >::random_points ( size_t const  n) const
inline

◆ random_points() [2/2]

template<floating_point Real, size_t N>
template<typename RandReal , typename RandEngine >
auto tatooine::geometry::sphere< Real, N >::random_points ( size_t const  n,
random::uniform< RandReal, RandEngine > &  rand 
) const
inline

Member Data Documentation

◆ m_center

template<floating_point Real, size_t N>
vec_t tatooine::geometry::sphere< Real, N >::m_center = vec_t::zeros()
private

◆ m_radius

template<floating_point Real, size_t N>
Real tatooine::geometry::sphere< Real, N >::m_radius = 1
private

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