Photon Engine 2.0.0-beta
A physically based renderer.
|
Represents a 4-D vector. More...
#include <TVector4.h>
Public Member Functions | |
PH_DEFINE_INLINE_RULE_OF_5_MEMBERS (TVector4) | |
TVector4 (T vx, T vy, T vz, T vw) | |
template<typename U > | |
TVector4 (const TVector4< U > &other) | |
T & | x () |
T & | y () |
T & | z () |
T & | w () |
const T & | x () const |
const T & | y () const |
const T & | z () const |
const T & | w () const |
T & | r () |
T & | g () |
T & | b () |
T & | a () |
const T & | r () const |
const T & | g () const |
const T & | b () const |
const T & | a () const |
![]() | |
T | dot (const TVector4< T > &rhs) const |
T | dot (T rhs) const |
T | absDot (const TVector4< T > &rhs) const |
T | absDot (T rhs) const |
T | length () const |
T | lengthSquared () const |
TVector4< T > | safeNormalize (const TVector4< T > &fallback=TVector4< T >{}) const |
std::size_t | minDimension () const |
std::size_t | maxDimension () const |
constexpr std::size_t | size () const noexcept |
Number of elements of the array. | |
TVector4< T > | add (const TVector4< T > &rhs) const |
TVector4< T > | add (T rhs) const |
TVector4< T > & | addLocal (const TVector4< T > &rhs) |
TVector4< T > & | addLocal (T rhs) |
TVector4< T > | sub (const TVector4< T > &rhs) const |
TVector4< T > | sub (T rhs) const |
TVector4< T > & | subLocal (const TVector4< T > &rhs) |
TVector4< T > & | subLocal (T rhs) |
TVector4< T > | mul (const TVector4< T > &rhs) const |
TVector4< T > | mul (T rhs) const |
TVector4< T > & | mulLocal (const TVector4< T > &rhs) |
TVector4< T > & | mulLocal (T rhs) |
TVector4< T > | div (const TVector4< T > &rhs) const |
TVector4< T > | div (T rhs) const |
TVector4< T > & | divLocal (const TVector4< T > &rhs) |
TVector4< T > & | divLocal (T rhs) |
TVector4< T > | pow (U exponent) const |
TVector4< T > | pow (const TVector4< T > &exponent) const |
TVector4< T > & | powLocal (U exponent) |
TVector4< T > & | powLocal (const TVector4< T > &exponent) |
TVector4< T > | exp (U exponent) const |
Sets the array to e^exponent . | |
TVector4< T > | exp (const TVector4< T > &exponent) const |
Sets the array to e^{exponent_i} . | |
TVector4< T > & | expLocal (U exponent) |
TVector4< T > & | expLocal (const TVector4< T > &exponent) |
TVector4< T > | sqrt () const |
TVector4< T > & | sqrtLocal () |
TVector4< T > | clamp (T lowerBound, T upperBound) const |
Clamps current array's elements to specific range. None of value , lowerBound and upperBound can be NaN, or the method's behavior is undefined. | |
TVector4< T > | clamp (const TVector4< T > &lowerBound, const TVector4< T > &upperBound) const |
TVector4< T > & | clampLocal (T lowerBound, T upperBound) |
TVector4< T > & | clampLocal (const TVector4< T > &lowerBound, const TVector4< T > &upperBound) |
TVector4< T > | safeClamp (T lowerBound, T upperBound) const |
Clamps current array's elements to specific range. If a floating-point value is non-finite (e.g., being Inf, NaN), its value is clamped to lowerBound . Neither lowerBound nor upperBound can be NaN, or the method's behavior is undefined. | |
TVector4< T > | safeClamp (const TVector4< T > &lowerBound, const TVector4< T > &upperBound) const |
TVector4< T > & | safeClampLocal (T lowerBound, T upperBound) |
TVector4< T > & | safeClampLocal (const TVector4< T > &lowerBound, const TVector4< T > &upperBound) |
TVector4< T > | abs () const |
TVector4< T > & | absLocal () |
TVector4< T > | rcp () const |
TVector4< T > & | rcpLocal () |
TVector4< T > | complement () const |
Complements the array's elements. Effectively performing 1 - (*this)[i] for each element. | |
TVector4< T > & | complementLocal () |
TVector4< T > | negate () const |
Applies a negative sign to the array's elements. These methods is only defined for signed element types. | |
TVector4< T > & | negateLocal () |
T | sum () const |
T | avg () const |
T | product () const |
T | min () const |
TVector4< T > | min (const TVector4< T > &other) const |
std::size_t | minIndex () const |
T | max () const |
TVector4< T > | max (const TVector4< T > &other) const |
std::size_t | maxIndex () const |
TVector4< T > | ceil () const |
TVector4< T > | floor () const |
TVector4< T > | lerp (const TVector4< T > &rhs, U factor) const |
bool | isZero () const |
bool | isNonNegative () const |
bool | isFinite () const |
TVector4< T > & | set (T value) |
TVector4< T > & | set (std::size_t index, T value) |
TVector4< T > & | set (const std::array< T, N > &values) |
auto | begin () noexcept -> typename std::array< T, N >::iterator |
auto | begin () const noexcept -> typename std::array< T, N >::const_iterator |
auto | end () noexcept -> typename std::array< T, N >::iterator |
auto | end () const noexcept -> typename std::array< T, N >::const_iterator |
bool | isEqual (const TVector4< T > &other) const |
bool | isNear (const TVector4< T > &other, T margin) const |
std::string | toString () const |
std::vector< T > | toVector () const |
std::array< T, N > | toArray () const |
TSpan< T, N > | toSpan () |
TSpanView< T, N > | toView () const |
TVector4< T > | normalize () const |
Normalize the vector. Notice that normalizing a integer typed vector will result in 0-vector most of the time. | |
TVector4< T > & | normalizeLocal () |
![]() | |
TArithmeticArrayBase (T value) | |
TArithmeticArrayBase (Elements values) | |
auto | pow (const U exponent) const -> TVector4< T > |
auto | powLocal (const U exponent) -> TVector4< T > & |
auto | exp (const U exponent) const -> TVector4< T > |
auto | expLocal (const U exponent) -> TVector4< T > & |
auto | lerp (const TVector4< T > &rhs, const U factor) const -> TVector4< T > |
Additional Inherited Members | |
![]() | |
using | Elements |
![]() | |
static constexpr auto | NUM_ELEMENTS |
![]() | |
PH_DEFINE_INLINE_RULE_OF_5_MEMBERS (TVectorNBase) | |
![]() | |
PH_DEFINE_INLINE_RULE_OF_5_MEMBERS (TArithmeticArrayBase) | |
constexpr std::size_t | size () const noexcept |
Number of elements of the array. | |
TVector4< T > | add (const TVector4< T > &rhs) const |
TVector4< T > | add (T rhs) const |
TVector4< T > & | addLocal (const TVector4< T > &rhs) |
TVector4< T > & | addLocal (T rhs) |
TVector4< T > | sub (const TVector4< T > &rhs) const |
TVector4< T > | sub (T rhs) const |
TVector4< T > & | subLocal (const TVector4< T > &rhs) |
TVector4< T > & | subLocal (T rhs) |
TVector4< T > | mul (const TVector4< T > &rhs) const |
TVector4< T > | mul (T rhs) const |
TVector4< T > & | mulLocal (const TVector4< T > &rhs) |
TVector4< T > & | mulLocal (T rhs) |
TVector4< T > | div (const TVector4< T > &rhs) const |
TVector4< T > | div (T rhs) const |
TVector4< T > & | divLocal (const TVector4< T > &rhs) |
TVector4< T > & | divLocal (T rhs) |
TVector4< T > | pow (U exponent) const |
TVector4< T > | pow (const TVector4< T > &exponent) const |
TVector4< T > & | powLocal (U exponent) |
TVector4< T > & | powLocal (const TVector4< T > &exponent) |
TVector4< T > | sqrt () const |
TVector4< T > & | sqrtLocal () |
TVector4< T > | abs () const |
TVector4< T > & | absLocal () |
TVector4< T > | rcp () const |
TVector4< T > & | rcpLocal () |
T | sum () const |
T | avg () const |
T | product () const |
T | min () const |
TVector4< T > | min (const TVector4< T > &other) const |
std::size_t | minIndex () const |
T | max () const |
TVector4< T > | max (const TVector4< T > &other) const |
std::size_t | maxIndex () const |
TVector4< T > | ceil () const |
TVector4< T > | floor () const |
TVector4< T > | lerp (const TVector4< T > &rhs, U factor) const |
bool | isZero () const |
bool | isNonNegative () const |
bool | isFinite () const |
TVector4< T > & | set (T value) |
TVector4< T > & | set (std::size_t index, T value) |
TVector4< T > & | set (const std::array< T, N > &values) |
T & | operator[] (std::size_t index) |
const T & | operator[] (std::size_t index) const |
bool | isEqual (const TVector4< T > &other) const |
bool | isNear (const TVector4< T > &other, T margin) const |
bool | operator== (const TVector4< T > &other) const |
bool | operator!= (const TVector4< T > &other) const |
TVector4< T > | operator+ (const TVector4< T > &rhs) const |
TVector4< T > | operator+ (T rhs) const |
TVector4< T > | operator- (const TVector4< T > &rhs) const |
TVector4< T > | operator- (T rhs) const |
TVector4< T > | operator- () const |
TVector4< T > | operator* (const TVector4< T > &rhs) const |
TVector4< T > | operator* (T rhs) const |
TVector4< T > | operator/ (const TVector4< T > &rhs) const |
TVector4< T > | operator/ (T rhs) const |
TVector4< T > & | operator+= (const TVector4< T > &rhs) |
TVector4< T > & | operator+= (T rhs) |
TVector4< T > & | operator-= (const TVector4< T > &rhs) |
TVector4< T > & | operator-= (T rhs) |
TVector4< T > & | operator*= (const TVector4< T > &rhs) |
TVector4< T > & | operator*= (T rhs) |
TVector4< T > & | operator/= (const TVector4< T > &rhs) |
TVector4< T > & | operator/= (T rhs) |
auto | begin () noexcept -> typename std::array< T, N >::iterator |
auto | begin () const noexcept -> typename std::array< T, N >::const_iterator |
auto | end () noexcept -> typename std::array< T, N >::iterator |
auto | end () const noexcept -> typename std::array< T, N >::const_iterator |
std::string | toString () const |
std::vector< T > | toVector () const |
std::array< T, N > | toArray () const |
TSpan< T, N > | toSpan () |
TSpanView< T, N > | toView () const |
TVector4< T > | exp (U exponent) const |
Sets the array to e^exponent . | |
TVector4< T > & | expLocal (U exponent) |
TVector4< T > | exp (const TVector4< T > &exponent) const |
Sets the array to e^{exponent_i} . | |
TVector4< T > & | expLocal (const TVector4< T > &exponent) |
TVector4< T > | clamp (T lowerBound, T upperBound) const |
Clamps current array's elements to specific range. None of value , lowerBound and upperBound can be NaN, or the method's behavior is undefined. | |
TVector4< T > | clamp (const TVector4< T > &lowerBound, const TVector4< T > &upperBound) const |
TVector4< T > & | clampLocal (T lowerBound, T upperBound) |
TVector4< T > & | clampLocal (const TVector4< T > &lowerBound, const TVector4< T > &upperBound) |
TVector4< T > | safeClamp (T lowerBound, T upperBound) const |
Clamps current array's elements to specific range. If a floating-point value is non-finite (e.g., being Inf, NaN), its value is clamped to lowerBound . Neither lowerBound nor upperBound can be NaN, or the method's behavior is undefined. | |
TVector4< T > | safeClamp (const TVector4< T > &lowerBound, const TVector4< T > &upperBound) const |
TVector4< T > & | safeClampLocal (T lowerBound, T upperBound) |
TVector4< T > & | safeClampLocal (const TVector4< T > &lowerBound, const TVector4< T > &upperBound) |
TVector4< T > | complement () const |
Complements the array's elements. Effectively performing 1 - (*this)[i] for each element. | |
TVector4< T > & | complementLocal () |
TVector4< T > | negate () const |
Applies a negative sign to the array's elements. These methods is only defined for signed element types. | |
TVector4< T > & | negateLocal () |
![]() | |
std::array< T, N > | m |
![]() | |
std::array< T, N > | m |
![]() | |
static constexpr auto | NUM_ELEMENTS |
Represents a 4-D vector.
|
inline |
|
inlineexplicit |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
ph::math::TVector4< T >::PH_DEFINE_INLINE_RULE_OF_5_MEMBERS | ( | TVector4< T > | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |