28#if PLATFORM_ENABLE_VECTORINTRINSICS
35#pragma warning (disable : 4459)
52 static_assert(std::is_floating_point_v<T>,
"T must be floating point");
128#if ENABLE_NAN_DIAGNOSTIC
199 template <
typename IntType>
207 template <
typename IntType>
289 template<
typename FArg UE_REQUIRES(std::is_arithmetic_v<FArg>)>
301 template<
typename FArg UE_REQUIRES(std::is_arithmetic_v<FArg>)>
313 template<
typename FArg UE_REQUIRES(std::is_arithmetic_v<FArg>)>
325 template<
typename FArg UE_REQUIRES(std::is_arithmetic_v<FArg>)>
414 template<
typename FArg UE_REQUIRES(std::is_arithmetic_v<FArg>)>
428 template<
typename FArg UE_REQUIRES(std::is_arithmetic_v<FArg>)>
1020 return Dist(V1, V2);
1179 if constexpr (std::is_same_v<T, float>)
1217 template<
typename FArg UE_REQUIRES(!std::is_same_v<T, FArg>)>
1231 Ar << V.
X << V.
Y << V.
Z;
1358 const T
OMC = 1.f -
C;
1391 Temp=(Point1.
X - Point2.
X);
if (FMath::Abs(Temp)>=Dist)
return false;
1392 Temp=(Point1.
Y - Point2.
Y);
if (FMath::Abs(Temp)>=Dist)
return false;
1393 Temp=(Point1.
Z - Point2.
Z);
if (FMath::Abs(Temp)>=Dist)
return false;
1456 ( (
X.X * (
Y.Y *
Z.Z -
Y.Z *
Z.Y))
1457 + (
X.Y * (
Y.Z *
Z.X -
Y.X *
Z.Z))
1458 + (
X.Z * (
Y.X *
Z.Y -
Y.Y *
Z.X)));
1495 :
X(InColor.
R),
Y(InColor.
G),
Z(InColor.
B)
1501template <
typename IntType>
1503 :
X((T)InVector.
X),
Y((T)InVector.
Y),
Z((T)InVector.
Z)
1509template <
typename IntType>
1511 :
X((T)
A.
X),
Y((T)
A.
Y),
Z(0.f)
1518 :
X(0.0f),
Y(0.0f),
Z(0.0f)
1549 return X*V.
X +
Y*V.
Y +
Z*V.
Z;
1591 return X==V.
X &&
Y==V.
Y &&
Z==V.
Z;
1597 return X!=V.
X ||
Y!=V.
Y ||
Z!=V.
Z;
1603 return FMath::Abs(
X-V.
X) <= Tolerance && FMath::Abs(
Y-V.
Y) <= Tolerance && FMath::Abs(
Z-V.
Z) <= Tolerance;
1609 return FMath::Abs(
X -
Y) <= Tolerance && FMath::Abs(
X -
Z) <= Tolerance && FMath::Abs(
Y -
Z) <= Tolerance;
1623 X += V.
X;
Y += V.
Y;
Z += V.
Z;
1624 DiagnosticCheckNaN();
1631 X -= V.
X;
Y -= V.
Y;
Z -= V.
Z;
1632 DiagnosticCheckNaN();
1639 X *= V.
X;
Y *= V.
Y;
Z *= V.
Z;
1640 DiagnosticCheckNaN();
1647 X /= V.
X;
Y /= V.
Y;
Z /= V.
Z;
1648 DiagnosticCheckNaN();
1670 DiagnosticCheckNaN();
1676 return FMath::Max(FMath::Max(
X,
Y),
Z);
1682 return FMath::Max(FMath::Max(FMath::Abs(
X),FMath::Abs(
Y)),FMath::Abs(
Z));
1688 return FMath::Min(FMath::Min(
X,
Y),
Z);
1694 return FMath::Min(FMath::Min(FMath::Abs(
X),FMath::Abs(
Y)),FMath::Abs(
Z));
1712 return TVector<T>(FMath::Abs(
X), FMath::Abs(
Y), FMath::Abs(
Z));
1718 return FMath::Sqrt(
X*
X +
Y*
Y +
Z*
Z);
1736 return SizeSquared();
1742 return FMath::Sqrt(
X*
X +
Y*
Y);
1755 FMath::Abs(
X)<=Tolerance
1756 && FMath::Abs(
Y)<=Tolerance
1757 && FMath::Abs(
Z)<=Tolerance;
1763 return X==0.f &&
Y==0.f &&
Z==0.f;
1827 FMath::FloatSelect(
X, (T)1, (T)-1),
1828 FMath::FloatSelect(
Y, (T)1, (T)-1),
1829 FMath::FloatSelect(
Z, (T)1, (T)-1)
1850 const T
Scale = FMath::InvSqrt(
X *
X +
Y *
Y);
1913 const T
VSq = SizeSquared();
1933 const T
VSq2D = SizeSquared2D();
1948 *
this = (*
this + V).BoundToCube(Radius);
1972 return (
Index >= 0) && (
Index < NumComponents);
2050 return AllComponentsEqual(Tolerance);
2117 return (
A * ((*
this |
A) / (
A |
A)));
2137 if (Points.Num() == 0 ||
Clusters.Num() == 0)
2150 for (
int32 i = 0; i < Points.Num(); i++)
2159 const T DistSqr = (Pos -
Clusters[j]).SizeSquared();
2185 for (
int32 i = 0; i < ClusterData.
Num(); i++)
2198 check(NumPoints >= 2);
2201 const T q = 1.f / (T)(NumPoints - 1);
2213 const TVector<T> d = P3 - 3 * P2 + 3 * P1 - P0;
2217 TVector<T> U = b * q + c * q * q + d * q * q * q;
2218 TVector<T> V = 2 * c * q * q + 6 * d * q * q * q;
2227 for (
int32 i = 1; i < NumPoints; ++i)
2250 XAxis -= (XAxis | ZAxis) / (ZAxis | ZAxis) * ZAxis;
2251 YAxis -= (YAxis | ZAxis) / (ZAxis | ZAxis) * ZAxis;
2256 XAxis = YAxis ^ ZAxis;
2262 YAxis = XAxis ^ ZAxis;
2282 const T
NX = FMath::Abs(
X);
2283 const T
NY = FMath::Abs(
Y);
2284 const T
NZ = FMath::Abs(
Z);
2290 TVector<T> Tmp = Axis1 - *
this * (Axis1 | *
this);
2292 Axis2 = Axis1 ^ *
this;
2298 return (!FMath::IsFinite(
X) ||
2299 !FMath::IsFinite(
Y) ||
2300 !FMath::IsFinite(
Z));
2306 return FString::Printf(
TEXT(
"X=%3.3f Y=%3.3f Z=%3.3f"),
X,
Y,
Z);
2325 return NSLOCTEXT(
"Core",
"Vector3_CompactZeroVector",
"V(0)");
2341 if (XIsNotZero && YIsNotZero && ZIsNotZero)
2345 else if (!XIsNotZero && YIsNotZero && ZIsNotZero)
2349 else if (XIsNotZero && !YIsNotZero && ZIsNotZero)
2353 else if (XIsNotZero && YIsNotZero && !ZIsNotZero)
2357 else if (!XIsNotZero && !YIsNotZero && ZIsNotZero)
2361 else if (XIsNotZero && !YIsNotZero && !ZIsNotZero)
2365 else if (!XIsNotZero && YIsNotZero && !ZIsNotZero)
2370 return NSLOCTEXT(
"Core",
"Vector3_CompactZeroVector",
"V(0)");
2378 return FString(
TEXT(
"V(0)"));
2441 const T Phi = FMath::Atan2(
Y,
X);
2499 FMath::Min(
A.X,
B.X ),
2500 FMath::Min(
A.Y,
B.Y ),
2501 FMath::Min(
A.Z,
B.Z )
2509 FMath::Max(
A.X,
B.X ),
2510 FMath::Max(
A.Y,
B.Y ),
2511 FMath::Max(
A.Z,
B.Z )
2535#if !defined(_MSC_VER) || defined(__clang__)
2567template<
typename T,
typename T2 UE_REQUIRES(std::is_arithmetic_v<T2>)>
2570 return V.operator*(
Scale);
2610#if PLATFORM_LITTLE_ENDIAN
2611#define INTEL_ORDER_VECTOR(x) (x)
2629template<
typename T,
typename U>
2683 * (((PlaneOrigin - Point1)|PlaneNormal) / ((Point2 - Point1)|PlaneNormal));
2690 const T
v = (Dir | (Origin - Start));
2691 const T
disc = Radius * Radius - ((
EO |
EO) -
v *
v);
2714 Result.X = FRand() * 2.f - 1.f;
2715 Result.Y = FRand() * 2.f - 1.f;
2716 Result.Z = FRand() * 2.f - 1.f;
2717 L = Result.SizeSquared();
2721 return Result * (1.0f /
Sqrt(L));
2729template<
typename InIntType>
2730template <
typename FloatType>
2733 if constexpr (std::is_same_v<IntType, int32>)
2735 X = FMath::TruncToInt32(InVector.
X);
2736 Y = FMath::TruncToInt32(InVector.
Y);
2737 Z = FMath::TruncToInt32(InVector.
Z);
2739 else if constexpr (std::is_same_v<IntType, uint32>)
2747 static_assert(
sizeof(
IntType) == 0,
"Unimplemented");
2795#if PLATFORM_ENABLE_VECTORINTRINSICS
2802 const float A2 =
A *
A;
2803 const float A3 = A2 *
A;
2805 const float s0 = (2 * A3) - (3 * A2) + 1;
2806 const float s1 = A3 - (2 * A2) +
A;
2807 const float s2 = (A3 - A2);
2808 const float s3 = (-2 * A3) + (3 * A2);
2822#pragma warning (pop)
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define INTEL_ORDERF(x)
Definition ByteSwap.h:141
@ INDEX_NONE
Definition CoreMiscDefines.h:150
EForceInit
Definition CoreMiscDefines.h:154
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
T ComputeSquaredDistanceFromBoxToPoint(const UE::Math::TVector< T > &Mins, const UE::Math::TVector< T > &Maxs, const UE::Math::TVector< U > &Point)
Definition Vector.h:2630
UE::Math::TVector< T > ClampVector(const UE::Math::TVector< T > &V, const UE::Math::TVector< T > &Min, const UE::Math::TVector< T > &Max)
Definition Vector.h:2601
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define NSLOCTEXT(InNamespace, InKey, InTextLiteral)
Definition Internationalization.h:300
#define UE_SERIALIZE_VARIANT_FROM_MISMATCHED_TAG(AR_OR_SLOT, ALIAS, TYPE, ALT_TYPE)
Definition LargeWorldCoordinatesSerializer.h:9
#define logOrEnsureNanError(_FormatString_,...)
Definition LogMacros.h:436
#define DECLARE_INTRINSIC_TYPE_LAYOUT(T)
Definition MemoryLayout.h:760
#define MAX_int16
Definition NumericLimits.h:24
@ LARGE_WORLD_COORDINATES
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
#define SA_VALUE(Name, Value)
Definition StructuredArchiveNameHelpers.h:77
FORCEINLINE VectorRegister4Double VectorLoadFloat3(const double *Ptr)
Definition UnrealMathFPU.h:427
FORCEINLINE VectorRegister4Float VectorMultiply(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:758
FORCEINLINE VectorRegister4Float VectorLoadFloat1(const float *Ptr)
Definition UnrealMathFPU.h:468
FORCEINLINE VectorRegister4Float VectorMultiplyAdd(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2, const VectorRegister4Float &Vec3)
Definition UnrealMathFPU.h:786
FORCEINLINE VectorRegister4Float VectorAdd(const VectorRegister4Float &Vec1, const VectorRegister4Float &Vec2)
Definition UnrealMathFPU.h:704
FORCEINLINE void VectorStoreFloat3(const VectorRegister4Float &Vec, float *Dst)
Definition UnrealMathFPU.h:594
#define UE_THRESH_NORMALS_ARE_ORTHOGONAL
Definition UnrealMathUtility.h:212
#define UE_THRESH_POINTS_ARE_SAME
Definition UnrealMathUtility.h:201
#define UE_PI
Definition UnrealMathUtility.h:129
#define UE_BIG_NUMBER
Definition UnrealMathUtility.h:132
#define UE_SMALL_NUMBER
Definition UnrealMathUtility.h:130
#define UE_THRESH_NORMALS_ARE_PARALLEL
Definition UnrealMathUtility.h:211
#define UE_THRESH_VECTOR_NORMALIZED
Definition UnrealMathUtility.h:214
#define UE_THRESH_POINT_ON_PLANE
Definition UnrealMathUtility.h:199
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
#define UE_DELTA
Definition UnrealMathUtility.h:186
uint32 Size
Definition VulkanMemory.cpp:4034
Definition Archive.h:1208
virtual CORE_API uint32 EngineNetVer() const
Definition Archive.cpp:1497
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
UE_FORCEINLINE_HINT FPackageFileVersion UEVer() const
Definition Archive.h:204
Definition NameTypes.h:617
Definition StructuredArchiveSlots.h:144
Definition StructuredArchiveSlots.h:52
UE_API FStructuredArchiveRecord EnterRecord()
Definition StructuredArchiveSlots.h:252
static CORE_API FText AsNumber(float Val, const FNumberFormattingOptions *const Options=NULL, const FCulturePtr &TargetCulture=NULL)
static CORE_API FText Format(FTextFormat Fmt, const FFormatNamedArguments &InArguments)
Definition Text.cpp:469
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2083
SizeType AddZeroed()
Definition Array.h:2755
UE_FORCEINLINE_HINT ValueType & Add(const KeyType &InKey, const ValueType &InValue)
Definition SortedMap.h:194
CORE_API FArchive & GetUnderlyingArchive() const
Definition StructuredArchiveSlots.cpp:7
@ None
Definition Axis.h:12
FVector3f NarrowWorldPositionChecked(const FVector &WorldPosition)
Definition Vector.h:2772
constexpr FVector::FReal DefaultFloatPrecision
Definition Vector.h:2769
uint32 GetTypeHash(const TBox< T > &Box)
Definition Box.h:1008
FArchive & operator<<(FArchive &Ar, TBoxSphereBounds< float, float > &Bounds)
Definition BoxSphereBounds.h:396
UE_FORCEINLINE_HINT TQuat< T > operator*(const float Scale, const TQuat< T > &Q)
Definition Quat.h:1055
Definition AdvancedWidgetsModule.cpp:13
float v
Definition radaudio_mdct.cpp:62
U16 Index
Definition radfft.cpp:71
static CORE_API uint32 MemCrc_DEPRECATED(const void *Data, int32 Length, uint32 CRC=0)
Definition Crc.cpp:592
CORE_API static const FGuid Guid
Definition EngineNetworkCustomVersion.h:106
@ SerializeDoubleVectorsAsDoubles
Definition EngineNetworkCustomVersion.h:77
@ Ver21AndViewPitchOnly_DONOTUSE
Definition EngineNetworkCustomVersion.h:81
static constexpr UE_FORCEINLINE_HINT auto DegreesToRadians(T const &DegVal) -> decltype(DegVal *(UE_PI/180.f))
Definition UnrealMathUtility.h:871
static UE::Math::TVector< FReal > LinePlaneIntersection(const UE::Math::TVector< FReal > &Point1, const UE::Math::TVector< FReal > &Point2, const UE::Math::TVector< FReal > &PlaneOrigin, const UE::Math::TVector< FReal > &PlaneNormal)
static constexpr void SinCos(std::decay_t< T > *ScalarSin, std::decay_t< T > *ScalarCos, T Value)
Definition UnrealMathUtility.h:753
static constexpr T CubicInterp(const T &P0, const T &T0, const T &P1, const T &T1, const U &A)
Definition UnrealMathUtility.h:1212
static constexpr UE_FORCEINLINE_HINT T Square(const T A)
Definition UnrealMathUtility.h:578
static bool LineSphereIntersection(const UE::Math::TVector< FReal > &Start, const UE::Math::TVector< FReal > &Dir, FReal Length, const UE::Math::TVector< FReal > &Origin, FReal Radius)
static FVector VRand()
Definition Vector.h:2706
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
static constexpr UE_FORCEINLINE_HINT T Min3(const T A, const T B, const T C)
Definition UnrealMathUtility.h:558
static UE_FORCEINLINE_HINT bool IsNearlyZero(float Value, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:407
static constexpr UE_FORCEINLINE_HINT T Max3(const T A, const T B, const T C)
Definition UnrealMathUtility.h:551
static constexpr T UnwindDegrees(T A)
Definition UnrealMathUtility.h:944
static constexpr UE_FORCEINLINE_HINT T GridSnap(T Location, T Grid)
Definition UnrealMathUtility.h:685
static CORE_API bool Value(const TCHAR *Stream, const TCHAR *Match, FName &Name)
Definition Parse.cpp:584
static const CharType * Strifind(const CharType *Str, const CharType *Find, bool bSkipQuotedChars=false)
Definition CString.h:692
@ Value
Definition Array.h:46
Definition IsPODType.h:12
@ Value
Definition IsPODType.h:13
Definition IsUECoreType.h:19
@ Value
Definition IsUECoreType.h:20
Definition IntVector.h:22
InIntType IntType
Definition IntVector.h:23
TVector< T > SphericalToUnitCartesian() const
Definition Vector.h:2759
UE_FORCEINLINE_HINT void DiagnosticCheckNaN()
Definition Vector2D.h:683
bool InitFromCompactString(const FString &InSourceString)
Definition Vector.h:2411
TVector< T > ComponentMin(const TVector< T > &Other) const
Definition Vector.h:1698
TVector2< T > UnitCartesianToSpherical() const
Definition Vector.h:2437
T & operator[](int32 Index)
Definition Vector.h:1653
TVector< T > operator*=(FArg Scale)
Definition Vector.h:415
static TVector< T > DegreesToRadians(const TVector< T > &DegVector)
Definition Vector.h:1468
static CORE_API const TVector< T > DownVector
Definition Vector.h:88
static TVector< T > UnitX()
Definition Vector.h:118
static constexpr int32 NumComponents
Definition Vector.h:76
UE_FORCEINLINE_HINT TVector< T > ProjectOnToNormal(const TVector< T > &Normal) const
Definition Vector.h:2121
void ToDirectionAndLength(TVector< T > &OutDir, float &OutLength) const
Definition Vector.h:1807
UE_FORCEINLINE_HINT TVector< T > operator-(const TVector< T > &V) const
Definition Vector.h:1571
static TVector< T > One()
Definition Vector.h:115
bool InitFromString(const FString &InSourceString)
Definition Vector.h:2426
bool NetSerialize(FArchive &Ar, class UPackageMap *Map, bool &bOutSuccess)
Definition Vector.h:1195
T XYZ[3]
Definition Vector.h:72
static bool PointsAreSame(const TVector< T > &P, const TVector< T > &Q)
Definition Vector.h:1368
UE_FORCEINLINE_HINT UE::Math::TRotator< T > Rotation() const
Definition Vector.h:834
T Z
Definition Vector.h:68
TVector< T > BoundToCube(T Radius) const
Definition Vector.h:1861
void AddBounded(const TVector< T > &V, T Radius=MAX_int16)
Definition Vector.h:1946
UE_FORCEINLINE_HINT bool operator==(const TVector< T > &V) const
Definition Vector.h:1589
T CosineAngle2D(TVector< T > B) const
Definition Vector.h:2104
bool SerializeFromMismatchedTag(FName StructTag, FStructuredArchive::FSlot Slot)
Definition Vector.h:1177
TVector< T > GetUnsafeNormal() const
Definition Vector.h:1841
static UE_FORCEINLINE_HINT T DistSquared2D(const TVector< T > &V1, const TVector< T > &V2)
Definition Vector.h:1053
static TVector< T > Zero()
Definition Vector.h:112
TVector(T InX, T InY, T InZ)
Definition Vector.h:1487
T Y
Definition Vector.h:65
static CORE_API const TVector< T > ZeroVector
Definition Vector.h:79
static CORE_API const TVector< T > ZAxisVector
Definition Vector.h:109
T Length() const
Definition Vector.h:1722
static CORE_API const TVector< T > XAxisVector
Definition Vector.h:103
static T EvaluateBezier(const TVector< T > *ControlPoints, int32 NumPoints, TArray< TVector< T > > &OutPoints)
Definition Vector.h:2195
static TVector< T > UnitY()
Definition Vector.h:121
T operator[](int32 Index) const
Definition Vector.h:1659
T GetMin() const
Definition Vector.h:1686
TVector< T > GetClampedToSize2D(T Min, T Max) const
Definition Vector.h:1895
static CORE_API const TVector< T > BackwardVector
Definition Vector.h:94
bool IsNormalized() const
Definition Vector.h:1786
TVector< T > operator/(FArg Scale) const
Definition Vector.h:326
UE_FORCEINLINE_HINT TVector< T > operator+(const TVector< T > &V) const
Definition Vector.h:1565
static CORE_API const TVector< T > ForwardVector
Definition Vector.h:91
static TVector< T > UnitZ()
Definition Vector.h:124
static TVector< T > RadiansToDegrees(const TVector< T > &RadVector)
Definition Vector.h:1462
bool Serialize(FArchive &Ar)
Definition Vector.h:1165
TVector< T > RotateAngleAxisRad(const T AngleRad, const TVector< T > &Axis) const
Definition Vector.h:1341
bool IsZero() const
Definition Vector.h:1761
TVector< T > MirrorByPlane(const TPlane< T > &Plane) const
Definition Plane.h:613
TVector< T > GetUnsafeNormal2D() const
Definition Vector.h:1848
CORE_API TRotator< T > ToOrientationRotator() const
Definition UnrealMath.cpp:200
TVector< T > GetClampedToMaxSize2D(T MaxSize) const
Definition Vector.h:1926
UE_FORCEINLINE_HINT constexpr TVector(T InF, TVectorConstInit)
Definition Vector.h:1481
static CORE_API const TVector< T > OneVector
Definition Vector.h:82
UE_FORCEINLINE_HINT bool AllComponentsEqual(T Tolerance=UE_KINDA_SMALL_NUMBER) const
Definition Vector.h:1607
T GetComponentForAxis(EAxis::Type Axis) const
Definition Vector.h:1976
UE_FORCEINLINE_HINT TVector< T > operator+(FArg Bias) const
Definition Vector.h:302
static UE_FORCEINLINE_HINT T DotProduct(const TVector< T > &A, const TVector< T > &B)
Definition Vector.h:1559
void UnwindEuler()
Definition Vector.h:2272
static TVector< T > Max(const TVector< T > &A, const TVector< T > &B)
Definition Vector.h:2506
static CORE_API const TVector< T > UpVector
Definition Vector.h:85
UE_FORCEINLINE_HINT void DiagnosticCheckNaN() const
Definition Vector.h:147
FText ToCompactText() const
Definition Vector.h:2321
static UE_FORCEINLINE_HINT T DistXY(const TVector< T > &V1, const TVector< T > &V2)
Definition Vector.h:2472
TVector< T > ComponentMax(const TVector< T > &Other) const
Definition Vector.h:1704
static TVector< T > Min(const TVector< T > &A, const TVector< T > &B)
Definition Vector.h:2496
FString ToString() const
Definition Vector.h:2304
UE_FORCEINLINE_HINT TVector< T > Cross(const TVector< T > &V2) const
Definition Vector.h:1535
T GetMax() const
Definition Vector.h:1674
UE_FORCEINLINE_HINT TVector< T > operator*(FArg Scale) const
Definition Vector.h:314
T & Component(int32 Index)
Definition Vector.h:1952
TVector< T > GetClampedToMaxSize(T MaxSize) const
Definition Vector.h:1906
static UE_FORCEINLINE_HINT T Dist2D(const TVector< T > &V1, const TVector< T > &V2)
Definition Vector.h:1031
bool Normalize(T Tolerance=UE_SMALL_NUMBER)
Definition Vector.h:1767
TVector< T > operator/=(const TVector< T > &V)
Definition Vector.h:1645
TVector< T > operator+=(const TVector< T > &V)
Definition Vector.h:1621
static TVector< T > PointPlaneProject(const TVector< T > &Point, const TVector< T > &PlaneBase, const TVector< T > &PlaneNormal)
Definition Vector.h:1410
static CORE_API const TVector< T > LeftVector
Definition Vector.h:100
T GetAbsMax() const
Definition Vector.h:1680
TVector< T > GridSnap(const T &GridSz) const
Definition Vector.h:1855
static UE_FORCEINLINE_HINT T BoxPushOut(const TVector< T > &Normal, const TVector< T > &Size)
Definition Vector.h:2490
TVector(T InF)
Definition Vector.h:1474
T FReal
Definition Vector.h:55
bool Serialize(FStructuredArchive::FSlot Slot)
Definition Vector.h:1171
T GetAbsMin() const
Definition Vector.h:1692
static UE_FORCEINLINE_HINT T Distance(const TVector< T > &V1, const TVector< T > &V2)
Definition Vector.h:1018
T X
Definition Vector.h:62
TVector< T > operator-=(const TVector< T > &V)
Definition Vector.h:1629
TVector< T > GetSafeNormal(T Tolerance=UE_SMALL_NUMBER, const TVector< T > &ResultIfZero=ZeroVector) const
Definition Vector.h:2060
static void GenerateClusterCenters(TArray< TVector< T > > &Clusters, const TArray< TVector< T > > &Points, int32 NumIterations, int32 NumConnectionsToBeValid)
Definition Vector.h:2128
TVector< T > operator*=(const TVector< T > &V)
Definition Vector.h:1637
TVector< T > Projection() const
Definition Vector.h:1834
static UE_FORCEINLINE_HINT TVector< T > CrossProduct(const TVector< T > &A, const TVector< T > &B)
Definition Vector.h:1541
TVector(TIntPoint< IntType > A)
Definition Vector.h:1510
TVector< T > operator^(const TVector< T > &V) const
Definition Vector.h:1524
bool ContainsNaN() const
Definition Vector.h:2296
void ToDirectionAndLength(TVector< T > &OutDir, double &OutLength) const
Definition Vector.h:1792
TVector< T > Reciprocal() const
Definition Vector.h:2013
static bool Orthogonal(const TVector< T > &Normal1, const TVector< T > &Normal2, T OrthogonalCosineThreshold=UE_THRESH_NORMALS_ARE_ORTHOGONAL)
Definition Vector.h:1438
TVector< T > operator/=(FArg Scale)
Definition Vector.h:429
CORE_API TQuat< T > ToOrientationQuat() const
Definition UnrealMath.cpp:285
UE_FORCEINLINE_HINT T operator|(const TVector< T > &V) const
Definition Vector.h:1547
T Component(int32 Index) const
Definition Vector.h:1961
UE_FORCEINLINE_HINT bool Equals(const TVector< T > &V, T Tolerance=UE_KINDA_SMALL_NUMBER) const
Definition Vector.h:1601
TVector< T > MirrorByVector(const TVector< T > &MirrorNormal) const
Definition Vector.h:2054
static T Triple(const TVector< T > &X, const TVector< T > &Y, const TVector< T > &Z)
Definition Vector.h:1453
UE_FORCEINLINE_HINT bool operator!=(const TVector< T > &V) const
Definition Vector.h:1595
FText ToText() const
Definition Vector.h:2310
UE_FORCEINLINE_HINT TVector< T > operator-() const
Definition Vector.h:1614
static TVector< T > Max3(const TVector< T > &A, const TVector< T > &B, const TVector< T > &C)
Definition Vector.h:2526
static CORE_API TVector< T > SlerpVectorToDirection(const TVector< T > &V, const TVector< T > &Direction, T Alpha)
Definition UnrealMath.cpp:225
TVector< T > GetClampedToSize(T Min, T Max) const
Definition Vector.h:1884
UE_FORCEINLINE_HINT TVector< T > operator-(FArg Bias) const
Definition Vector.h:290
bool IsNearlyZero(T Tolerance=UE_KINDA_SMALL_NUMBER) const
Definition Vector.h:1752
T SizeSquared2D() const
Definition Vector.h:1746
TVector(const TVector2< T > V, T InZ)
Definition Vector.h:1326
void SetComponentForAxis(EAxis::Type Axis, T Component)
Definition Vector.h:1993
static void CreateOrthonormalBasis(TVector< T > &XAxis, TVector< T > &YAxis, TVector< T > &ZAxis)
Definition Vector.h:2247
TVector< T > RotateAngleAxis(const T AngleDeg, const TVector< T > &Axis) const
Definition Vector.h:1335
UE_FORCEINLINE_HINT TVector< T > operator*(const TVector< T > &V) const
Definition Vector.h:1577
T SquaredLength() const
Definition Vector.h:1734
bool IsUniform(T Tolerance=UE_KINDA_SMALL_NUMBER) const
Definition Vector.h:2048
UE_FORCEINLINE_HINT TVector< T > ProjectOnTo(const TVector< T > &A) const
Definition Vector.h:2115
static CORE_API TVector< T > SlerpNormals(const TVector< T > &NormalA, const TVector< T > &NormalB, T Alpha)
Definition UnrealMath.cpp:242
FString ToCompactString() const
Definition Vector.h:2374
UE_FORCEINLINE_HINT void DiagnosticCheckNaN(const TCHAR *Message) const
Definition Vector.h:148
static T PointPlaneDist(const TVector< T > &Point, const TVector< T > &PlaneBase, const TVector< T > &PlaneNormal)
Definition Vector.h:1399
static TVector< T > PointPlaneProject(const TVector< T > &Point, const TPlane< T > &Plane)
Definition Plane.h:619
static TVector< T > VectorPlaneProject(const TVector< T > &V, const TVector< T > &PlaneNormal)
Definition Vector.h:1418
static bool Parallel(const TVector< T > &Normal1, const TVector< T > &Normal2, T ParallelCosineThreshold=UE_THRESH_NORMALS_ARE_PARALLEL)
Definition Vector.h:1424
void FindBestAxisVectors(TVector< T > &Axis1, TVector< T > &Axis2) const
Definition Vector.h:2280
T SizeSquared() const
Definition Vector.h:1728
TVector(const TVector< FArg > &From)
Definition Vector.h:1218
TVector< T > GetAbs() const
Definition Vector.h:1710
TVector< T > GetSafeNormal2D(T Tolerance=UE_SMALL_NUMBER, const TVector< T > &ResultIfZero=ZeroVector) const
Definition Vector.h:2078
void Set(T InX, T InY, T InZ)
Definition Vector.h:1665
TVector(EForceInit)
Definition Vector.h:1517
TVector< T > BoundToBox(const TVector< T > &Min, const TVector< T > &Max) const
Definition Vector.h:1872
TVector< T > GetSignVector() const
Definition Vector.h:1823
TVector(TIntVector3< IntType > InVector)
Definition Vector.h:1502
TVector(const FLinearColor &InColor)
Definition Vector.h:1494
T Size2D() const
Definition Vector.h:1740
bool IsValidIndex(int32 Index) const
Definition Vector.h:1970
static bool PointsAreNear(const TVector< T > &Point1, const TVector< T > &Point2, T Dist)
Definition Vector.h:1388
UE_FORCEINLINE_HINT bool IsUnit(T LengthSquaredTolerance=UE_KINDA_SMALL_NUMBER) const
Definition Vector.h:1780
static bool Coplanar(const TVector< T > &Base1, const TVector< T > &Normal1, const TVector< T > &Base2, const TVector< T > &Normal2, T ParallelCosineThreshold=UE_THRESH_NORMALS_ARE_PARALLEL)
Definition Vector.h:1445
static UE_FORCEINLINE_HINT T DistSquared(const TVector< T > &V1, const TVector< T > &V2)
Definition Vector.h:2478
static CORE_API const TVector< T > RightVector
Definition Vector.h:97
UE_FORCEINLINE_HINT TVector< T > operator/(const TVector< T > &V) const
Definition Vector.h:1583
T Size() const
Definition Vector.h:1716
static UE_FORCEINLINE_HINT T Dist(const TVector< T > &V1, const TVector< T > &V2)
Definition Vector.h:2466
static UE_FORCEINLINE_HINT T DistSquaredXY(const TVector< T > &V1, const TVector< T > &V2)
Definition Vector.h:2484
UE_FORCEINLINE_HINT T Dot(const TVector< T > &V) const
Definition Vector.h:1553
static CORE_API const TVector< T > YAxisVector
Definition Vector.h:106
T HeadingAngle() const
Definition Vector.h:2446
static TVector< T > Min3(const TVector< T > &A, const TVector< T > &B, const TVector< T > &C)
Definition Vector.h:2516
static bool Coincident(const TVector< T > &Normal1, const TVector< T > &Normal2, T ParallelCosineThreshold=UE_THRESH_NORMALS_ARE_PARALLEL)
Definition Vector.h:1431
Definition UnrealMathFPU.h:42