Template Class beam_t

Inheritance Relationships

Base Type

Class Documentation

template<beam::transport_e Transport, Quantity Q>
class beam_t : public wt::beam::beam_generic_t

Beam paired with radiometric data: see wt::beam::beam_radiometric_data_t.

Public Functions

inline beam_t(const ray_t &ray, const data_t::stokes_t &S, const frame_t &frame, const wavenumber_t k, const beam::sourcing_geometry_t &sourcing_geometry) noexcept
inline beam_t(const elliptic_cone_t &envelope, const data_t::stokes_t &S, const frame_t &frame, const wavenumber_t k) noexcept
inline beam_t(const ray_t &ray, const Q &s, const wavenumber_t k, const beam::sourcing_geometry_t &sourcing_geometry) noexcept
inline beam_t(const elliptic_cone_t &envelope, const Q &s, const wavenumber_t k) noexcept
inline beam_t(const ray_t &ray, const mueller_operator_t &M, const Q &scale, const frame_t &Mframe, const wavenumber_t k, const beam::sourcing_geometry_t &sourcing_geometry) noexcept
inline beam_t(const elliptic_cone_t &envelope, const mueller_operator_t &M, const Q &scale, const frame_t &Mframe, const wavenumber_t k) noexcept
inline beam_t(const ray_t &ray, const Q &scale, const wavenumber_t k, const beam::sourcing_geometry_t &sourcing_geometry) noexcept
inline beam_t(const elliptic_cone_t &envelope, const Q &scale, const wavenumber_t k) noexcept
beam_t(const beam_t&) noexcept = default
inline const auto &radiometric_data() const noexcept
inline auto intensity() const noexcept

Returns the intensity of the beam radiometric data.

inline auto isfinite() const noexcept
inline auto isnan() const noexcept
inline virtual wavenumber_t k() const noexcept override

Returns the beam’s wavenumber.

inline void transform_surface_interaction(const intersection_surface_t &surface, const dir3_t &wo, const bsdf::bsdf_result_t &bsdf, const f_t weight) noexcept

Interact with a surface and scatter into direction wo.

Parameters:
  • bsdf – the interaction BSDF

  • weight – interaction sampling weight and other scaling factors

inline void transform_region_interaction(const pqvec3_t &wp, const length_t dist, const dir3_t &wo, const f_t weight) noexcept

Interact at a region around a point (volumetric scattering, fsd, etc.) and scatter into direction wo. TODO: polarimetric volumetric interactions.

Parameters:
  • wp – interaction point

  • dist – distance of propagation from previous interaction

  • weight – interaction sampling weight and other scaling factors

inline void transform_edge_interaction(const intersection_edge_t &intersection, const pqvec3_t &interaction_centre_wp, const pqvec3_t &edge_interaction_wp, const length_t dist, const dir3_t &wo, const f_t weight) noexcept

Interact at an edge, and scatter into direction wo. TODO: polarimetric edge interactions.

Parameters:
  • interaction_centre_wp – centre of interaction

  • edge_interaction_wp – interation point on edge interaction

  • dist – distance of propagation from previous interaction

  • weight – interaction sampling weight and other scaling factors

inline auto transform_restart(const pqvec3_t &wp, const length_t dist) noexcept

Restart propagation (null interaction).

Parameters:
  • wp – beam’s new origin

  • dist – distance of propagation from previous interaction to wp

template<Quantity Q2>
inline operator beam_t<transport, Q2>() const noexcept
inline auto &operator+=(const beam_t &o) noexcept
inline auto operator+(const beam_t &o) const noexcept
inline auto &operator*=(const f_t scale) noexcept
inline auto &operator/=(const f_t scale) noexcept

Public Static Functions

static inline constexpr auto beam_transport() noexcept

Public Static Attributes

static constexpr auto transport = Transport

Friends

template<ScalarOrUnit SQ>
inline friend auto operator*(const beam_t &beam, const SQ scale) noexcept
template<ScalarOrUnit SQ>
inline friend auto operator*(const SQ scale, const beam_t &beam) noexcept
template<ScalarOrUnit SQ>
inline friend auto operator/(const beam_t &beam, const SQ scale) noexcept