30 template<CVec3 Vec3Type>
42 return { .Up = Vec3Type(0, 1, 0), .Forward = Vec3Type(0, 0, 1) };
48 return { .Up = Vec3Type(0, 1, 0), .Forward = Vec3Type(0, 0, -1) };
61 const Vec3Type forward = -
Forward;
64 .X = CrossProduct(
Up, forward),
73 return Math::QuatFromUpAndForward(
Up, -
Forward);
78 template<CVec3 Vec3Type>
85 template<CVec3 Vec3Type>
88 return lhs.Up== rhs.Up && lhs.Forward == rhs.Forward;
91 template<CVec3 Vec3Type>
94 return lhs.Location == rhs.Location && lhs.Orientation == rhs.Orientation;
#define JPL_ASSERT(inExpression,...)
Main assert macro, usage: JPL_ASSERT(condition, message) or JPL_ASSERT(condition)
Definition ErrorReporting.h:80
JPL_INLINE constexpr bool IsNearlyZero(T value, T errorTolerance=JPL_FLOAT_EPS_V< T >) noexcept
Definition Math.h:146
Definition AcousticMaterial.h:36
JPL_INLINE constexpr bool operator==(const Vec2 &A, const Vec2 &B) noexcept
Definition MinimalVec2.h:59
Orthonormal basis (column-major)
Definition MinimalBasis.h:35
Minimum data required to do our orientation math.
Definition Position.h:32
static JPL_INLINE OrientationData< Vec3Type > Identity() noexcept
Definition Position.h:40
static JPL_INLINE OrientationData< Vec3Type > IdentityForward() noexcept
Identity facing forward as per right-handed rotation.
Definition Position.h:46
Vec3Type Up
Definition Position.h:37
JPL_INLINE Basis< Vec3Type > ToBasis() const noexcept
Definition Position.h:51
JPL_INLINE Basis< Vec3Type > ToBasisUnsafe() const
Definition Position.h:58
JPL_INLINE Quat< Vec3Type > ToQuat() const noexcept
Definition Position.h:70
Vec3Type Forward
Definition Position.h:38
Location and orientation in one place.
Definition Position.h:80
OrientationData< Vec3Type > Orientation
Definition Position.h:82
Vec3Type Location
Definition Position.h:81
Minimal quaternion (w + xi + yj + zk)
Definition MinimalQuat.h:38