UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Utilities.h File Reference
#include "Chaos/Core.h"
#include "Chaos/Matrix.h"
#include "Chaos/Transform.h"
#include "Chaos/UniformGrid.h"
#include "Chaos/Vector.h"
#include "Math/NumericLimits.h"
#include "Templates/IsIntegral.h"

Go to the source code of this file.

Namespaces

namespace  Chaos
 
namespace  Chaos::Utilities
 

Functions

template<typename TRealType >
TRealType Chaos::Utilities::SignedSquare (TRealType A)
 
template<class TINT = uint64>
TINT Chaos::Utilities::Factorial (TINT Num)
 Take the factorial of Num, which should be of integral type.
 
template<class TINT = uint64>
TINT Chaos::Utilities::NChooseR (const TINT N, const TINT R)
 Number of ways to choose of R elements from a set of size N, with no repetitions.
 
template<class TINT = uint64>
TINT Chaos::Utilities::NPermuteR (const TINT N, const TINT R)
 Number of ways to choose of R elements from a set of size N, with repetitions.
 
template<class T , class TARRAY = TArray<T>>
void Chaos::Utilities::GetMinAvgMax (const TARRAY &Values, T &MinV, double &AvgV, T &MaxV)
 Compute the minimum, average, and maximum values of Values.
 
template<class T , class TARRAY = TArray<T>>
Chaos::Utilities::GetAverage (const TARRAY &Values)
 Compute the average value.
 
template<class T , class TARRAY = TArray<T>>
Chaos::Utilities::GetVariance (const TARRAY &Values, const T Avg)
 Compute the variance of Values, given the average value of Avg.
 
template<class T , class TARRAY = TArray<T>>
Chaos::Utilities::GetVariance (const TARRAY &Values)
 Compute the variance of Values (computes their average on the fly).
 
template<class T , class TARRAY = TArray<T>>
Chaos::Utilities::GetStandardDeviation (const TARRAY &Values, const T Avg)
 Compute the standard deviation of Values, given the average value of Avg.
 
template<class T , class TARRAY = TArray<T>>
Chaos::Utilities::GetStandardDeviation (const TARRAY &Values)
 Compute the standard deviation of Values (computes their average on the fly).
 
template<class T >
Chaos::Utilities::GetStandardDeviation (const T Variance)
 Compute the standard deviation from Variance.
 
FMatrix33 Chaos::Utilities::Multiply (const FMatrix33 &L, const FMatrix33 &R)
 
FMatrix44 Chaos::Utilities::Multiply (const FMatrix44 &L, const FMatrix44 &R)
 
FMatrix33 Chaos::Utilities::MultiplyAB (const FMatrix33 &LIn, const FMatrix33 &RIn)
 
FMatrix33 Chaos::Utilities::MultiplyABt (const FMatrix33 &L, const FMatrix33 &R)
 
FMatrix33 Chaos::Utilities::MultiplyAtB (const FMatrix33 &L, const FMatrix33 &R)
 
FVec3 Chaos::Utilities::Multiply (const FMatrix33 &L, const FVec3 &R)
 
TVec3< FRealSingleChaos::Utilities::Multiply (const TMatrix33< FRealSingle > &L, const TVec3< FRealSingle > &R)
 
FVec4 Chaos::Utilities::Multiply (const FMatrix44 &L, const FVec4 &R)
 
bool Chaos::Utilities::Solve (FVec3 &X, const FMatrix33 &A, const FVec3 &B)
 
FRigidTransform3 Chaos::Utilities::Multiply (const FRigidTransform3 L, const FRigidTransform3 &R)
 
FMatrix33 Chaos::Utilities::ComputeWorldSpaceInertia (const FRotation3 &CoMRotation, const FMatrix33 &I)
 
FMatrix33 Chaos::Utilities::ComputeWorldSpaceInertia (const FRotation3 &CoMRotation, const FVec3 &I)
 
FVec3 Chaos::Utilities::GetAngularVelocityAdjustedForGyroscopicTorques (const FRotation3 &Q, const FVec3 &I, const FVec3 &W, const FReal Dt)
 
template<class T >
PMatrix< T, 3, 3 > Chaos::Utilities::ComputeJointFactorMatrix (const TVec3< T > &V, const PMatrix< T, 3, 3 > &M, const T &Im)
 
template<class T >
TVec3< T > Chaos::Utilities::ComputeDiagonalJointFactorMatrix (const TVec3< T > &V, const PMatrix< T, 3, 3 > &M, const T &Im)
 
template<typename T >
bool Chaos::Utilities::IntersectLineSegments2D (const TVec2< T > &InStartA, const TVec2< T > &InEndA, const TVec2< T > &InStartB, const TVec2< T > &InEndB, T &OutTA, T &OutTB)
 
bool Chaos::Utilities::ClipLineSegmentToPlane (FVec3 &V0, FVec3 &V1, const FVec3 &PlaneNormal, const FVec3 &PlanePos)
 
bool Chaos::Utilities::ClipLineSegmentToAxisAlignedPlane (FVec3 &V0, FVec3 &V1, const int32 AxisIndex, const FReal PlaneDir, const FReal PlanePos)
 
void Chaos::Utilities::ProjectPointOntoAxisAlignedPlane (FVec3 &V, const FVec3 &Dir, int32 AxisIndex, FReal PlaneDir, FReal PlanePos)
 
bool Chaos::Utilities::ProjectPointOntoAxisAlignedPlaneSafe (FVec3 &V, const FVec3 &Dir, int32 AxisIndex, FReal PlaneDir, FReal PlanePos, FReal Epsilon)
 
bool Chaos::Utilities::NormalizeSafe (FVec3 &V, FReal EpsilonSq=UE_SMALL_NUMBER)
 
template<class T >
Chaos::Utilities::DotProduct (const TArray< T > &X, const TArray< T > &Y)
 
template<typename T >
TVec3< T > Chaos::Utilities::ScaleInertia (const TVec3< T > &Inertia, const TVec3< T > &Scale, const bool bScaleMass)
 
FMatrix33 Chaos::Utilities::ScaleInertia (const FMatrix33 &Inertia, const FVec3 &Scale, const bool bScaleMass)
 
bool Chaos::Utilities::BoxFromInertia (const FVec3 &InInertia, const FReal Mass, FVec3 &OutCenter, FVec3 &OutSize)
 
int32 Chaos::Utilities::WrapIndex (int32 V, int32 Begin, int32 End)
 
void Chaos::Utilities::NearestPointsOnLineSegments (const FVec3 &P1, const FVec3 &Q1, const FVec3 &P2, const FVec3 &Q2, FReal &S, FReal &T, FVec3 &C1, FVec3 &C2, const FReal Epsilon=1.e-4f)
 
void Chaos::Utilities::NearestPointsOnLineSegmentToLine (const FVec3 &SegmentBegin, const FVec3 &SegmentEnd, const FVec3 &LinePos, const FVec3 &LineVector, FReal &S, FReal &T, FVec3 &C1, FVec3 &C2, const FReal Epsilon=1.e-4f)
 
template<typename T >
Chaos::Utilities::ClosestTimeOnLineSegment (const TVec3< T > &Point, const TVec3< T > &StartPoint, const TVec3< T > &EndPoint)
 
template<typename T >
Chaos::Utilities::RaySphereIntersectionDistance (const TVec3< T > &RayStart, const TVec3< T > &RayDir, const TVec3< T > &SpherePos, const T SphereRadius)
 The distance from Start to the sphere along the vector Dir. Returns numeric max if no intersection.
 
template<typename T >
Chaos::Utilities::AsinEst1 (const T X)
 
template<typename T >
Chaos::Utilities::AsinEst3 (const T X)
 
template<typename T >
Chaos::Utilities::AsinEst5 (const T X)
 
template<typename T >
Chaos::Utilities::AsinEst7 (const T X)
 
template<typename T , int Order = 5>
Chaos::Utilities::AsinEst (const T X)
 
template<typename T , int Order = 5>
Chaos::Utilities::AsinEstCrossover (const T X, const T Crossover=T(0.7))
 
template<class T , class TV , class TV_INT4 >
void Chaos::Utilities::TetMeshFromGrid (const TUniformGrid< T, 3 > &Grid, TArray< TV_INT4 > &Mesh, TArray< TV > &X)
 Generate a tetrahedral mesh from a Freudenthal lattice defined on a 3 dimensional grid.
 
template<int d>
TArray< TArray< int > > Chaos::Utilities::ComputeIncidentElements (const TArray< TVector< int32, d > > &Mesh, TArray< TArray< int32 > > *LocalIndex=nullptr)
 
void Chaos::Utilities::DFS_iterative (const TArray< TArray< int32 > > &L, int32 v, TArray< bool > &visited, TArray< int32 > &component)
 
void Chaos::Utilities::ConnectedComponentsDFSIterative (const TArray< TArray< int32 > > &L, TArray< TArray< int32 > > &C)
 
void Chaos::Utilities::FindConnectedRegions (const TArray< FIntVector4 > &Elements, TArray< TArray< int32 > > &ConnectedComponents)
 
void Chaos::Utilities::FindConnectedRegions (const TArray< FIntVector3 > &Elements, TArray< TArray< int32 > > &ConnectedComponents)
 
TArray< int32Chaos::Utilities::ComputeBoundaryNodes (const TArray< TVec3< int32 > > &TriangleMesh)
 
TArray< TArray< int32 > > Chaos::Utilities::ComputeIncidentElements (const TArray< TArray< int32 > > &Constraints, TArray< TArray< int32 > > *LocalIndex=nullptr)
 
void Chaos::Utilities::MergeIncidentElements (const TArray< TArray< int32 > > &ExtraIncidentElements, const TArray< TArray< int32 > > &ExtraIncidentElementsLocal, TArray< TArray< int32 > > &IncidentElements, TArray< TArray< int32 > > &IncidentElementsLocal)
 
FIntVector3 Chaos::Utilities::SortFIntVector3 (FIntVector3 &V)
 
FIntVector3 Chaos::Utilities::TetFace (int32 f)
 
template<typename Func1 , typename Func2 >
TArray< FIntVector2Chaos::Utilities::ComputeMeshFacePairs (const TArray< FIntVector4 > &Mesh, Func1 GreaterThan, Func2 Equal)
 
TArray< FIntVector2Chaos::Utilities::ComputeTetMeshFacePairs (const TArray< FIntVector4 > &TetMesh)
 
TArray< TArray< FVector3f > > Chaos::Utilities::RandomPointsInTet (const TArray< FVector3f > &x, const TArray< FIntVector4 > &TetMesh, const TArray< int32 > &SampleElements, int32 NumRandomPointsPerElement=1)