Template Class transform_generic_t

Class Documentation

template<FloatingPoint Fp = f_t>
class transform_generic_t

Public Types

using mat4_t = mat4<Fp>
using mat3_t = mat3<Fp>
using v3_t = vec3<Fp>
using v4_t = vec4<Fp>
using pqv3_t = qvec3<quantity<isq::length[u::m], Fp>>
using d3_t = dirvec3<Fp>
using angle_type = quantity<angular::angle[u::ang::rad], Fp>

Public Functions

inline constexpr transform_generic_t()
inline explicit transform_generic_t(const mat4_t &m)
transform_generic_t(const transform_generic_t&) = default
transform_generic_t &operator=(const transform_generic_t&) = default
inline auto transpose() const noexcept
inline auto inverse_transpose() const noexcept
inline auto inverse() const noexcept
inline auto operator()(const v3_t &v, transform_vector_t) const noexcept

Transforms a 3-dimensional unitless vector as a vector (w=0 in homogeneous coordinates).

template<QuantityVectorWithRep<Fp> QV>
inline auto operator()(const QV &v, transform_point_t) const noexcept

Transforms a 3-dimensional length vector as a point (w=1 in homogeneous coordinates).

template<QuantityVectorWithRep<Fp> QV>
inline auto operator()(const QV &v, transform_vector_t) const noexcept

Transforms a 3-dimensional length vector as a vector (w=0 in homogeneous coordinates).

inline auto operator()(const d3_t &v) const noexcept

Applies the inverse-transpose of this transform to a 3-dimensional direction.

inline auto operator()(const frame_t &frame) const noexcept

Transforms and re-orthogonalizes a frame.

inline auto operator()(const ray_t &ray) const noexcept
inline transform_generic_t &operator*=(const transform_generic_t &t) noexcept
inline auto operator*(const transform_generic_t &t) const noexcept
inline bool operator==(const transform_generic_t &t) const noexcept
inline bool operator!=(const transform_generic_t &t) const noexcept
inline const auto &matrix() const noexcept
inline const auto &matrix_inverse_transpose() const noexcept
template<FloatingPoint S>
inline explicit operator transform_generic_t<S>() const noexcept

Explicit cast to a different floating-point type S.

inline std::string description() const noexcept

Public Static Functions

static inline transform_generic_t rotate(d3_t from, d3_t to) noexcept
static inline transform_generic_t rotate(v3_t axis, angle_type angle) noexcept
static inline transform_generic_t translate(const pqv3_t &translate) noexcept
static inline transform_generic_t scale(const v3_t &scale) noexcept
static inline transform_generic_t lookat(const pqv3_t &origin, const pqv3_t &target, const v3_t &up) noexcept
static inline transform_generic_t to_frame(const frame_t &f) noexcept
static inline transform_generic_t from_frame(const frame_t &f) noexcept
static inline transform_generic_t perspective(const angle_t fov, const Fp aspect, const Fp znear) noexcept
static inline transform_generic_t viewport(const vec2_t &size) noexcept