5#include "Containers/Array.h"
35 return FMath::Acos(
A.GetSafeNormal() |
B.GetSafeNormal());
56 return FMath::Acos(
A.Vector() |
B.Vector());
63 return (
A -
B).Size();
68 static inline double ArcLength(
const FQuat&
A,
const FQuat&
B)
70 return A.GetNormalized().AngularDistance(
B.GetNormalized());
89 return FMath::Abs(
A.GetTwistAngle(TwistAxis) -
B.GetTwistAngle(TwistAxis));
101 static inline float Linear(
float Value,
float Sigma)
115 return FMath::Exp(-2.0f *
Value / Sigma);
120 static inline float Cubic(
float Value,
float Sigma)
131 return FMath::Max(1.f - FMath::Pow(
Value, 5.0f), 0.f);
180 template<
typename U,
typename InAllocator>
187 int NumNodes = Nodes.
Num();
200 for (
int32 i = 0; i < NumNodes; i++)
206 for (
int32 i = 0; i < NumNodes; i++)
208 const float*
C = &
Coeffs[i * NumNodes];
211 for (
int32 j = 0; j < NumNodes; j++)
229 for (
int32 i = 0; i < NumNodes; i++)
234 for (
int32 i = 0; i < NumNodes; i++)
240 float TotalWeight = 0.0f;
241 for (
int32 i = 0; i < NumNodes; i++)
245 for (
int32 i = 0; i < NumNodes; i++)
256 for (
int32 i = 0; i < NumNodes; i++)
262 else if (NumNodes == 1)
295 for (
int32 i = 0; i < (NumNodes - 1); i++)
297 for (
int32 j = i + 1; j < NumNodes; j++)
313 void MakeUpperKernel()
330 for (
int32 i = 0; i < NumNodes; i++)
333 for (
int32 j = i; j < NumNodes; j++)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define FVector
Definition IOSSystemIncludes.h:8
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
constexpr TTuple< std::decay_t< Types >... > MakeTuple(Types &&... Args)
Definition Tuple.h:794
uint32 Size
Definition VulkanMemory.cpp:4034
Definition RBFInterpolator.h:139
TArray< float > Coeffs
Definition RBFInterpolator.h:145
bool bIsValid
Definition RBFInterpolator.h:146
ANIMGRAPHRUNTIME_API bool SetUpperKernel(const TArrayView< float > &UpperKernel, int32 Size)
Definition RBFInterpolator.cpp:24
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition RBFInterpolator.h:153
TRBFInterpolator< T > & operator=(TRBFInterpolator< T > &&)=default
TRBFInterpolator< T > & operator=(const TRBFInterpolator< T > &)=default
TRBFInterpolator(TRBFInterpolator< T > &&)=default
void Interpolate(TArray< float, InAllocator > &OutWeights, const U &Value, bool bClip=true, bool bNormalize=false) const
Definition RBFInterpolator.h:181
static bool GetIdenticalNodePairs(const TArrayView< T > &InNodes, WeightFuncT InWeightFunc, TArray< TTuple< int, int > > &OutInvalidPairs)
Definition RBFInterpolator.h:277
TRBFInterpolator(const TArrayView< T > &InNodes, WeightFuncT InWeightFunc)
Definition RBFInterpolator.h:163
TFunction< float(const T &A, const T &B)> WeightFuncT
Definition RBFInterpolator.h:155
TRBFInterpolator(const TRBFInterpolator< T > &)=default
TRBFInterpolator()=default
Definition RBFInterpolator.h:17
Definition RBFInterpolator.h:99
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 IsNearlyEqualByULP(float A, float B, int32 MaxUlps=4)
Definition UnrealMathUtility.h:486
static constexpr UE_FORCEINLINE_HINT T Square(const T A)
Definition UnrealMathUtility.h:578
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
CORE_API void ToSwingTwist(const TVector< T > &InTwistAxis, TQuat< T > &OutSwing, TQuat< T > &OutTwist) const
Definition UnrealMath.cpp:793
static UE_FORCEINLINE_HINT double Distance(const TVector< double > &V1, const TVector< double > &V2)
Definition Vector.h:1018
T X
Definition Vector.h:62