40 std::array<float, 3>
mVF;
101 template<
typename Arg>
requires(std::is_arithmetic_v<Arg>)
103 template<
typename Arg>
requires(std::is_arithmetic_v<Arg>)
109 template<
typename Arg>
requires(std::is_arithmetic_v<Arg>)
112 template<
typename Arg>
requires(std::is_arithmetic_v<Arg>)
119 template<
typename T>
requires(std::is_arithmetic_v<T>)
121 template<
typename T>
requires(std::is_arithmetic_v<T>)
129 static JPL_INLINE constexpr MinimalVec3& Normalize(MinimalVec3& V)
noexcept {
return V.
Normalize(); }
131 [[
nodiscard]]
static JPL_INLINE constexpr float DotProduct(
const MinimalVec3&
A,
const MinimalVec3&
B)
noexcept{
return A.X *
B.X +
A.Y *
B.Y +
A.Z *
B.Z; }
132 [[
nodiscard]]
static JPL_INLINE constexpr MinimalVec3 CrossProduct(
const MinimalVec3&
A,
const MinimalVec3&
B)
noexcept
135 A.Y *
B.Z -
A.Z *
B.Y,
136 A.Z *
B.X -
A.X *
B.Z,
137 A.X *
B.Y -
A.Y *
B.X
JPL_INLINE constexpr T InvSqrt(T x) noexcept
Definition Math.h:283
JPL_INLINE constexpr T Sqrt(T x) noexcept
Definition Math.h:269
JPL_INLINE constexpr bool IsNearlyZero(T value, T errorTolerance=JPL_FLOAT_EPS_V< T >) noexcept
Definition Math.h:146
JPL_INLINE constexpr auto Abs(const T &value) noexcept
Standard abs is not constexpr in C++20.
Definition Math.h:87
Definition AcousticMaterial.h:36
JPL_INLINE constexpr Vec2 operator/(T Scale, const JPL::Vec2 &V) noexcept
Definition MinimalVec2.h:64
std::uint32_t uint32
Definition Core.h:311
JPL_INLINE constexpr bool operator==(const Vec2 &A, const Vec2 &B) noexcept
Definition MinimalVec2.h:59
JPL_INLINE constexpr Vec2 operator*(T Scale, const JPL::Vec2 &V) noexcept
Definition MinimalVec2.h:62
JPL_INLINE simd min(const simd &a, const simd &b) noexcept
Element-wise min.
Definition SIMD.h:1813
std::ostream & operator<<(std::ostream &os, const AcousticMaterial &v)
Definition AcousticMaterial.h:104
Definition MinimalVec3.h:37
JPL_INLINE constexpr MinimalVec3 operator-() const
Definition MinimalVec3.h:97
JPL_INLINE constexpr float Length() const noexcept
Definition MinimalVec3.h:55
JPL_INLINE constexpr MinimalVec3(float x, float y, float z) noexcept
Definition MinimalVec3.h:48
JPL_INLINE constexpr float LengthSquared() const noexcept
Definition MinimalVec3.h:54
JPL_INLINE constexpr MinimalVec3 SafeNormal(float &outLength, const MinimalVec3 &fallbackDirection, float tolerance=JPL_FLOAT_EPS) const noexcept
Definition MinimalVec3.h:81
JPL_INLINE constexpr MinimalVec3 operator-(const MinimalVec3 &V) const
Definition MinimalVec3.h:98
JPL_INLINE constexpr MinimalVec3 SafeNormal(const MinimalVec3 &fallbackDirection, float tolerance=JPL_FLOAT_EPS) const noexcept
Definition MinimalVec3.h:67
JPL_INLINE constexpr void operator+=(const MinimalVec3 &V) noexcept
Definition MinimalVec3.h:106
float Y
Definition MinimalVec3.h:43
JPL_INLINE constexpr MinimalVec3 & Normalize() noexcept
Definition MinimalVec3.h:57
JPL_INLINE constexpr MinimalVec3 operator+(const MinimalVec3 &V) const
Definition MinimalVec3.h:99
static JPL_INLINE constexpr MinimalVec3 Zero() noexcept
Definition MinimalVec3.h:50
float Z
Definition MinimalVec3.h:43
JPL_INLINE constexpr float operator[](uint32 coordinate) const
Definition MinimalVec3.h:52
JPL_INLINE constexpr MinimalVec3 & operator*=(const MinimalVec3 Other)
Definition MinimalVec3.h:107
float X
Definition MinimalVec3.h:43
std::array< float, 3 > mVF
Definition MinimalVec3.h:40
static JPL_INLINE float GetY(const MinimalVec3 &v) noexcept
Definition MinimalVec3.h:148
static JPL_INLINE void SetZ(MinimalVec3 &v, float value) noexcept
Definition MinimalVec3.h:153
static JPL_INLINE void SetX(MinimalVec3 &v, float value) noexcept
Definition MinimalVec3.h:151
static JPL_INLINE float GetX(const MinimalVec3 &v) noexcept
Definition MinimalVec3.h:147
static JPL_INLINE void SetY(MinimalVec3 &v, float value) noexcept
Definition MinimalVec3.h:152
static JPL_INLINE float GetZ(const MinimalVec3 &v) noexcept
Definition MinimalVec3.h:149
Definition Vec3Traits.h:30