84template<
typename PositionType>
90template<
typename PositionType>
99template<
typename VectorType>
105template<
typename VectorType>
115 static_assert(std::is_floating_point_v<T>,
"T must be floating point");
128 template<
typename ArgType>
132 template<
typename ArgType>
139 template<
typename ArgType>
148 return TScale2(Scale * RHS.Scale);
153 return TScale2(1.0f / Scale.
X, 1.0f / Scale.
Y);
159 return Scale ==
Other.Scale;
200 static_assert(std::is_floating_point_v<T>,
"T must be floating point");
211 template<
typename VType>
219 template<
typename VType>
236 template<
typename ArgType>
242 template<
typename ArgType>
268 return Shear ==
Other.Shear;
304 static_assert(std::is_floating_point_v<T>,
"T must be floating point");
315 template<
typename VType>
329 template<
typename ArgType>
339 template<
typename ArgType>
375 return Rot ==
Other.Rot;
405 static_assert(std::is_floating_point_v<T>,
"T must be floating point");
414 M[0][0] = 1; M[0][1] = 0;
415 M[1][0] = 0; M[1][1] = 1;
420 M[0][0] =
m00; M[0][1] =
m01;
421 M[1][0] =
m10; M[1][1] =
m11;
429 M[0][0] = UniformScale; M[0][1] = 0;
430 M[1][0] = 0; M[1][1] = UniformScale;
439 M[0][0] =
ScaleX; M[0][1] = 0;
440 M[1][0] = 0; M[1][1] =
ScaleY;
449 M[0][0] = 1; M[0][1] =
YY;
450 M[1][0] =
XX; M[1][1] = 1;
469 template<
typename ArgType>
479 template<
typename ArgType>
498 Result.DiagnosticCheckNaN();
512 Result.DiagnosticCheckNaN();
582 return FMath::Atan(
C /
D);
588 return M[0][0] == 1.0f && M[0][1] == 0.0f
589 && M[1][0] == 0.0f && M[1][1] == 1.0f;
603 return (!FMath::IsFinite(M[0][0]) ||
604 !FMath::IsFinite(M[0][1]) ||
605 !FMath::IsFinite(M[1][0]) ||
606 !FMath::IsFinite(M[1][1]));
609#if ENABLE_NAN_DIAGNOSTIC
637 T
XXB = (T)RHS.Shear.
X;
638 T
YYB = (T)RHS.Shear.
Y;
683 static_assert(std::is_floating_point_v<T>,
"T must be floating point");
691 template<
typename VType =
float>
698 template<
typename VType =
float>
705 template<
typename VType =
float>
712 template<
typename VType =
float>
719 template<
typename VType =
float>
726 template<
typename VType =
float>
735 template<
typename VType>
744 template<
typename VType>
817 template<
typename VType>
871template<
typename T,
typename V>
878template<
typename T,
typename V>
885template<
typename T,
typename V>
892template<
typename T,
typename V>
899template<
typename T,
typename V>
906template<
typename T,
typename V>
913template<
typename T,
typename V>
920template<
typename T,
typename V>
927template<
typename T,
typename V>
934template<
typename T,
typename V>
#define checkSlow(expr)
Definition AssertionMacros.h:332
@ ForceInitToZero
Definition CoreMiscDefines.h:156
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define logOrEnsureNanError(_FormatString_,...)
Definition LogMacros.h:436
UE::Math::TVector2< double > FVector2D
Definition MathFwd.h:48
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
Definition TransformCalculus2D.h:404
bool operator!=(const TMatrix2x2 &Other) const
Definition TransformCalculus2D.h:531
void GetMatrix(float &A, float &B, float &C, float &D) const
Definition TransformCalculus2D.h:536
TScale2< T > GetScaleSquared() const
Definition TransformCalculus2D.h:563
bool IsNearlyIdentity(T ErrorTolerance=UE_KINDA_SMALL_NUMBER) const
Definition TransformCalculus2D.h:592
UE::Math::TVector2< ArgType > TransformPoint(const UE::Math::TVector2< ArgType > &Point) const
Definition TransformCalculus2D.h:470
TMatrix2x2()
Definition TransformCalculus2D.h:412
TMatrix2x2(const TScale2< T > &Scale)
Definition TransformCalculus2D.h:435
UE_FORCEINLINE_HINT void DiagnosticCheckNaN() const
Definition TransformCalculus2D.h:619
T Determinant() const
Definition TransformCalculus2D.h:548
T InverseDeterminant() const
Definition TransformCalculus2D.h:555
void GetMatrix(double &A, double &B, double &C, double &D) const
Definition TransformCalculus2D.h:542
bool operator==(const TMatrix2x2 &RHS) const
Definition TransformCalculus2D.h:517
bool ContainsNaN() const
Definition TransformCalculus2D.h:601
bool IsIdentity() const
Definition TransformCalculus2D.h:586
TMatrix2x2(T UniformScale)
Definition TransformCalculus2D.h:427
TMatrix2x2 Concatenate(const TMatrix2x2 &RHS) const
Definition TransformCalculus2D.h:489
T GetRotationAngle() const
Definition TransformCalculus2D.h:578
TMatrix2x2(T m00, T m01, T m10, T m11)
Definition TransformCalculus2D.h:418
TMatrix2x2(const TShear2< T > &Shear)
Definition TransformCalculus2D.h:445
UE::Math::TVector2< ArgType > TransformVector(const UE::Math::TVector2< ArgType > &Vector) const
Definition TransformCalculus2D.h:480
TMatrix2x2(const TQuat2< T > &Rotation)
Definition TransformCalculus2D.h:455
TScale2< T > GetScale() const
Definition TransformCalculus2D.h:571
T FReal
Definition TransformCalculus2D.h:408
TMatrix2x2 Inverse() const
Definition TransformCalculus2D.h:504
Definition TransformCalculus2D.h:303
UE::Math::TVector2< ArgType > TransformPoint(const UE::Math::TVector2< ArgType > &Point) const
Definition TransformCalculus2D.h:330
bool operator==(const TQuat2 &Other) const
Definition TransformCalculus2D.h:373
TQuat2 Inverse() const
Definition TransformCalculus2D.h:367
TQuat2(T RotRadians)
Definition TransformCalculus2D.h:313
TQuat2()
Definition TransformCalculus2D.h:311
TQuat2(const UE::Math::TVector2< VType > &InRot)
Definition TransformCalculus2D.h:316
const Vector2Type & GetVector() const
Definition TransformCalculus2D.h:385
UE::Math::TVector2< ArgType > TransformVector(const UE::Math::TVector2< ArgType > &Vector) const
Definition TransformCalculus2D.h:340
T FReal
Definition TransformCalculus2D.h:307
UE::Math::TVector2< T > Vector2Type
Definition TransformCalculus2D.h:308
bool operator!=(const TQuat2 &Other) const
Definition TransformCalculus2D.h:379
TQuat2 Concatenate(const TQuat2 &RHS) const
Definition TransformCalculus2D.h:358
Definition TransformCalculus2D.h:114
const Vector2Type & GetVector() const
Definition TransformCalculus2D.h:169
TScale2()
Definition TransformCalculus2D.h:122
T FReal
Definition TransformCalculus2D.h:118
TScale2(const UE::Math::TVector2< ArgType > &InScale)
Definition TransformCalculus2D.h:129
UE::Math::TVector2< ArgType > TransformVector(const UE::Math::TVector2< ArgType > &Vector) const
Definition TransformCalculus2D.h:140
TScale2 Inverse() const
Definition TransformCalculus2D.h:151
bool operator==(const TScale2 &Other) const
Definition TransformCalculus2D.h:157
TScale2(T InScale)
Definition TransformCalculus2D.h:124
TScale2(T InScaleX, T InScaleY)
Definition TransformCalculus2D.h:126
bool operator!=(const TScale2 &Other) const
Definition TransformCalculus2D.h:163
UE::Math::TVector2< ArgType > TransformPoint(const UE::Math::TVector2< ArgType > &Point) const
Definition TransformCalculus2D.h:133
UE::Math::TVector2< T > Vector2Type
Definition TransformCalculus2D.h:119
TScale2 Concatenate(const TScale2 &RHS) const
Definition TransformCalculus2D.h:146
Definition TransformCalculus2D.h:199
UE::Math::TVector2< T > Vector2Type
Definition TransformCalculus2D.h:204
TShear2()
Definition TransformCalculus2D.h:207
TMatrix2x2< T > Inverse() const
Definition TransformCalculus2D.h:645
TShear2(T ShearX, T ShearY)
Definition TransformCalculus2D.h:209
bool operator==(const TShear2 &Other) const
Definition TransformCalculus2D.h:266
TShear2(const UE::Math::TVector2< VType > &InShear)
Definition TransformCalculus2D.h:212
bool operator!=(const TShear2 &Other) const
Definition TransformCalculus2D.h:272
TMatrix2x2< T > Concatenate(const TShear2 &RHS) const
Definition TransformCalculus2D.h:633
static TShear2 FromShearAngles(const UE::Math::TVector2< VType > &InShearAngles)
Definition TransformCalculus2D.h:220
T FReal
Definition TransformCalculus2D.h:203
UE::Math::TVector2< ArgType > TransformPoint(const UE::Math::TVector2< ArgType > &Point) const
Definition TransformCalculus2D.h:237
const Vector2Type & GetVector() const
Definition TransformCalculus2D.h:278
UE::Math::TVector2< ArgType > TransformVector(const UE::Math::TVector2< ArgType > &Vector) const
Definition TransformCalculus2D.h:243
UE::Math::TVector2< T > Concatenate(const UE::Math::TVector2< T > &LHS, const UE::Math::TVector2< T > &RHS)
Definition TransformCalculus2D.h:45
Definition AdvancedWidgetsModule.cpp:13
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:663
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:661
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:662
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:660
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:659
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:658
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:669
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:671
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:656
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:667
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:666
TScale2< T > ResultType
Definition TransformCalculus2D.h:189
TScale2< T > ResultType
Definition TransformCalculus2D.h:188
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:657
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:670
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:668
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:655
TScale2< T > ResultType
Definition TransformCalculus2D.h:186
TMatrix2x2< T > ResultType
Definition TransformCalculus2D.h:654
TScale2< T > ResultType
Definition TransformCalculus2D.h:185
Definition TransformCalculus.h:273
Definition UnrealMathUtility.h:270
static constexpr UE_FORCEINLINE_HINT auto DegreesToRadians(T const &DegVal) -> decltype(DegVal *(UE_PI/180.f))
Definition UnrealMathUtility.h:871
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
Definition IsPODType.h:12
@ Value
Definition IsPODType.h:13
bool ContainsNaN() const
Definition Vector2D.h:691
T Y
Definition Vector2D.h:52
T X
Definition Vector2D.h:49
static CORE_API const TVector2< T > ZeroVector
Definition Vector2D.h:63