35template<
typename T,
int N>
49 constexpr Ray() noexcept
50 : m_origin(
Point<T, N>::zeros()), m_direction(
Vector<T, N>::zeros()) {
52 m_direction.x() = 1.0;
73 : m_origin(
origin), m_direction((target -
origin).normalized()) {}
102 return m_origin + t * m_direction;
114template <
typename T,
int N>
115class RayDifferential {
118 std::array<Ray<T, N>, N - 1> m_differential_rays{};
122 constexpr RayDifferential() =
default;
123 constexpr RayDifferential(
const Ray<T, N>& ray)
126 : m_ray(origin, direction) {}
128 : m_ray(origin, target) {}
131 constexpr const Ray<T, N>& get_differential_ray(
int i)
const {
132 return m_differential_rays[i];
135 constexpr Ray<T, N>& get_differential_ray(
int i) {
136 return m_differential_rays[i];
A template class for an N-dimensional point in space.
Definition point.hpp:37
A template class for an N-dimensional geometric ray.
Definition ray.hpp:36
constexpr Ray(const Point< T, N > &origin, const Point< T, N > &target)
Constructs a ray from a starting point to a target point.
Definition ray.hpp:72
constexpr const Vector< Float, N > & direction() const noexcept
Definition ray.hpp:88
constexpr Ray(const Point< T, N > &origin, const Vector< T, N > &direction)
Constructs a ray from an origin point and a direction vector.
Definition ray.hpp:62
constexpr Point< T, N > at(T t) const noexcept
Calculates a point along the ray using the parametric equation.
Definition ray.hpp:101
constexpr const Point< Float, N > & origin() const noexcept
Definition ray.hpp:81
constexpr Ray() noexcept
Default constructor.
Definition ray.hpp:49
A template class for N-dimensional mathematical vectors.
Definition vector.hpp:35
Defines the primary floating-point type alias for the math library.
The namespace for math library implementation.
Definition bounding_box.hpp:9
Ray< Float, 2 > Ray2
A 2-dimensional ray of type Float.
Definition ray.hpp:112
Ray< Float, 3 > Ray3
A 3-dimensional ray of type Float, commonly used in 3D graphics.
Definition ray.hpp:109
Defines a generic, N-dimensional Point class and its geometric operations.
Defines a generic, N-dimensional, constexpr-friendly vector class.