TVector

A vector in 3-D space composed of components (X, Y, Z) with floating point precision.

Choose your operating system:

Windows

macOS

Linux

Inheritance Hierarchy

References

Module

Core

Header

/Engine/Source/Runtime/Core/Public/CoreFwd.h

Include

#include "CoreFwd.h"

Syntax

template<typename T>
struct TVector

Remarks

A vector in 3-D space composed of components (X, Y, Z) with floating point precision.

Specializations

Variables

Name Description

Public variable

T

 

X

Vector's X component.

Public variable

T

 

Y

Vector's Y component.

Public variable

T

 

Z

Vector's Z component.

Constructors

Name Description

Public function

TVector()

Default constructor (no initialization).

Public function

TVector

(
    T InX,
    T InY,
    T InZ
)

Constructor using initial values for each component.

Public function

TVector

(
    T InF
)

Constructor initializing all components to a single T value.

Public function

TVector

(
    const UE::Math::TVector4< T >& V
)

Constructor using the XYZ components from a 4D vector.

FVector inline functions

Public function

TVector

(
    const FLinearColor& InColor
)

Constructs a vector from an FLinearColor.

Public function

TVector

(
    FIntVector InVector
)

Constructs a vector from an FIntVector.

Public function

TVector

(
    FIntPoint A
)

Constructs a vector from an FIntPoint.

Public function

TVector

(
    EForceInit
)

Constructor which initializes all components to zero.

Public function

TVector

(
    const TVector< FArg >& From
)

Conversion from other type. TODO: explicit!

Public function

TVector

(
    const TVector2< T > V,
    T InZ
)

Constructs a vector from an TVector2 and Z value.

FVector inline functions

Functions

Name Description

Public function

void

 

AddBounded

(
    const TVector< T >& V,
    T Radius
)

Add a vector to this and clamp the result in a cube.

Public function Const

bool

 

AllComponentsEqual

(
    T Tolerance
)

Checks whether all components of this vector are the same, within a tolerance.

Public function Const

TVector< T >

 

BoundToBox

(
    const TVector< T >& Min,
    const TVector< T > Max
)

Get a copy of this vector, clamped inside of a cube.

Public function Const

TVector< T >

 

BoundToCube

(
    T Radius
)

Get a copy of this vector, clamped inside of a cube.

Public function Static

T

 

BoxPushOut

(
    const TVector< T >& Normal,
    const TVector< T >& Size
)

Compute pushout of a box from a plane.

Public function Static

bool

 

Coincident

(
    const TVector< T >& Normal1,
    const TVector< T >& Normal2,
    T ParallelCosineThreshold
)

See if two normal vectors are coincident (nearly parallel and point in the same direction).

Public function Const

T

 

Component

(
    int32 Index
)

Gets a specific component of the vector.

Public function

T &

 

Component

(
    int32 Index
)

Gets a specific component of the vector.

Public function Const

TVector< T >

 

ComponentMax

(
    const TVector< T >& Other
)

Gets the component-wise max of two vectors.

Public function Const

TVector< T >

 

ComponentMin

(
    const TVector< T >& Other
)

Gets the component-wise min of two vectors.

Public function Const

bool

 

ContainsNaN()

Utility to check if there are any non-finite values (NaN or Inf) in this vector.

Public function Static

bool

 

Coplanar

(
    const TVector< T >& Base1,
    const TVector< T >& Normal1,
    const TVector< T >& Base2,
    const TVector< T >& Normal2,
    T ParallelCosineThreshold
)

See if two planes are coplanar.

Public function Const

T

 

CosineAngle2D

(
    TVector< T > B
)

Returns the cosine of the angle between this vector and another projected onto the XY plane (no Z).

Public function Static

void

 

CreateOrthonormalBasis

(
    TVector< T >& XAxis,
    TVector< T >& YAxis,
    TVector< T >& ZAxis
)

Create an orthonormal basis from a basis with at least two orthogonal vectors.

Public function Const

TVector< T >

 

Cross

(
    const TVector< T >& V2
)

Calculate cross product between this and another vector.

Public function Static

TVector< T >

 

CrossProduct

(
    const TVector< T >& A,
    const TVector< T >& B
)

Calculate the cross product of two vectors.

Public function Static

TVector< T >

 

DegreesToRadians

(
    const TVector< T >& DegVector
)

Converts a vector containing degree values to a vector containing radian values.

Public function Const

void

 

DiagnosticCheckNaN

(
    const TCHAR* Message
)

Public function Const

void

 

DiagnosticCheckNaN()

Public function Static

T

 

Dist

(
    const TVector< T >& V1,
    const TVector< T >& V2
)

Euclidean distance between two points.

Public function Static

T

 

Dist2D

(
    const TVector< T >& V1,
    const TVector< T >& V2
)

Public function Static

T

 

Distance

(
    const TVector< T >& V1,
    const TVector< T >& V2
)

Public function Static

T

 

DistSquared

(
    const TVector< T >& V1,
    const TVector< T >& V2
)

Squared distance between two points.

Public function Static

T

 

DistSquared2D

(
    const TVector< T >& V1,
    const TVector< T >& V2
)

Public function Static

T

 

DistSquaredXY

(
    const TVector< T >& V1,
    const TVector< T >& V2
)

Squared distance between two points in the XY plane only.

Public function Static

T

 

DistXY

(
    const TVector< T >& V1,
    const TVector< T >& V2
)

Euclidean distance between two points in the XY plane (ignoring Z).

Public function Const

T

 

Dot

(
    const TVector< T >& V
)

Calculate the dot product between this and another vector.

Public function Static

T

 

DotProduct

(
    const TVector< T >& A,
    const TVector< T >& B
)

Calculate the dot product of two vectors.

Public function Const

bool

 

Equals

(
    const TVector< T >& V,
    T Tolerance
)

Check against another vector for equality, within specified error limits.

Public function Static

T

 

EvaluateBezier

(
    const TVector< T >* ControlPoi...,
    int32 NumPoints,
    TArray< TVector< T >>& OutPoints
)

Generates a list of sample points on a Bezier curve defined by 2 points.

Public function Const

void

 

FindBestAxisVectors

(
    TVector< T >& Axis1,
    TVector< T >& Axis2
)

Find good arbitrary axis vectors to represent U and V axes of a plane, using this vector as the normal of the plane.

Public function Static

void

 

GenerateClusterCenters

(
    TArray< TVector< T >>& Clusters,
    const TArray< TVector< T >>& Point...,
    int32 NumIterations,
    int32 NumConnectionsToBeValid
)

Given a current set of cluster centers, a set of points, iterate N times to move clusters to be central.

Public function Const

TVector< T >

 

GetAbs()

Get a copy of this vector with absolute value of each component.

Public function Const

T

 

GetAbsMax()

Get the maximum absolute value of the vector's components.

Public function Const

T

 

GetAbsMin()

Get the minimum absolute value of the vector's components.

Public function Const

TVector< T >

 

GetClampedToMaxSize

(
    T MaxSize
)

Create a copy of this vector, with its maximum magnitude clamped to MaxSize.

Public function Const

TVector< T >

 

GetClampedToMaxSize2D

(
    T MaxSize
)

Create a copy of this vector, with the maximum 2D magnitude clamped to MaxSize. Z is unchanged.

Public function Const

TVector< T >

 

GetClampedToSize

(
    T Min,
    T Max
)

Create a copy of this vector, with its magnitude clamped between Min and Max.

Public function Const

TVector< T >

 

GetClampedToSize2D

(
    T Min,
    T Max
)

Create a copy of this vector, with the 2D magnitude clamped between Min and Max. Z is unchanged.

Public function Const

T

 

GetComponentForAxis

(
    EAxis::Type Axis
)

Get a specific component of the vector, given a specific axis by enum

Public function Const

T

 

GetMax()

Get the maximum value of the vector's components.

Public function Const

T

 

GetMin()

Get the minimum value of the vector's components.

Public function Const

TVector< T >

 

GetSafeNormal

(
    T Tolerance,
    const TVector< T >& ResultIfZero
)

Gets a normalized copy of the vector, checking it is safe to do so based on the length.

Public function Const

TVector< T >

 

GetSafeNormal2D

(
    T Tolerance,
    const TVector< T >& ResultIfZero
)

Gets a normalized copy of the 2D components of the vector, checking it is safe to do so.

Public function Const

TVector< T >

 

GetSignVector()

Get a copy of the vector as sign only.

Public function Const

TVector< T >

 

GetUnsafeNormal()

Calculates normalized version of vector without checking for zero length.

Public function Const

TVector< T >

 

GetUnsafeNormal2D()

Calculates normalized 2D version of vector without checking for zero length.

Public function Const

TVector< T >

 

GridSnap

(
    const T& GridSz
)

Gets a copy of this vector snapped to a grid.

Public function Const

T

 

HeadingAngle()

Convert a direction vector into a 'heading' angle.

Public function

bool

 

InitFromCompactString

(
    const FString& InSourceString
)

Initialize this Vector based on an FString.

Public function

bool

 

InitFromString

(
    const FString& InSourceString
)

Initialize this Vector based on an FString.

Public function Const

bool

 

IsNearlyZero

(
    T Tolerance
)

Checks whether vector is near to zero within a specified tolerance.

Public function Const

bool

 

IsNormalized()

Checks whether vector is normalized.

Public function Const

bool

 

IsUniform

(
    T Tolerance
)

Check whether X, Y and Z are nearly equal.

Public function Const

bool

 

IsUnit

(
    T LengthSquaredTolerance
)

Check if the vector is of unit length, with specified tolerance.

Public function Const

bool

 

IsZero()

Checks whether all components of the vector are exactly zero.

Public function Const

T

 

Length()

Get the length (magnitude) of this vector.

Public function Static

TVector< T >

 

Max

(
    const TVector< T >& A,
    const TVector< T >& B
)

Public function Static

TVector< T >

 

Max3

(
    const TVector< T >& A,
    const TVector< T >& B,
    const TVector< T >& C
)

Public function Static

TVector< T >

 

Min

(
    const TVector< T >& A,
    const TVector< T >& B
)

Min, Max, Min3, Max3 like FMath

Public function Static

TVector< T >

 

Min3

(
    const TVector< T >& A,
    const TVector< T >& B,
    const TVector< T >& C
)

Public function Const

TVector< T >

 

MirrorByPlane

(
    const TPlane< T >& Plane
)

Mirrors a vector about a plane.

TVector inline functions

Public function Const

TVector< T >

 

MirrorByVector

(
    const TVector< T >& MirrorNormal
)

Mirror a vector about a normal vector.

Public function

bool

 

NetSerialize

(
    FArchive& Ar,
    UPackageMap* Map,
    bool& bOutSuccess
)

Network serialization function.

Public function

bool

 

Normalize

(
    T Tolerance
)

Normalize this vector in-place if it is larger than a given tolerance. Leaves it unchanged if not.

Public function Static

TVector< T >

 

One()

Public function Static

bool

 

Orthogonal

(
    const TVector< T >& Normal1,
    const TVector< T >& Normal2,
    T OrthogonalCosineThreshold
)

See if two normal vectors are nearly orthogonal (perpendicular), meaning the angle between them is close to 90 degrees.

Public function Static

bool

 

Parallel

(
    const TVector< T >& Normal1,
    const TVector< T >& Normal2,
    T ParallelCosineThreshold
)

See if two normal vectors are nearly parallel, meaning the angle between them is close to 0 degrees.

Public function Static

T

 

PointPlaneDist

(
    const TVector< T >& Point,
    const TVector< T >& PlaneBase,
    const TVector< T >& PlaneNormal
)

Calculate the signed distance (in the direction of the normal) between a point and a plane.

Public function Static

TVector< T >

 

PointPlaneProject

(
    const TVector< T >& Point,
    const TVector< T >& A,
    const TVector< T >& B,
    const TVector< T >& C
)

Calculate the projection of a point on the plane defined by counter-clockwise (CCW) points A,B,C.

Public function Static

TVector< T >

 

PointPlaneProject

(
    const TVector< T >& Point,
    const TVector< T >& PlaneBase,
    const TVector< T >& PlaneNormal
)

Calculate the projection of a point on the plane defined by PlaneBase and PlaneNormal.

Public function Static

TVector< T >

 

PointPlaneProject

(
    const TVector< T >& Point,
    const TPlane< T >& Plane
)

Calculate the projection of a point on the given plane.

Public function Static

bool

 

PointsAreNear

(
    const TVector< T >& Point1,
    const TVector< T >& Point2,
    T Dist
)

Compare two points and see if they're within specified distance.

Public function Static

bool

 

PointsAreSame

(
    const TVector< T >& P,
    const TVector< T >& Q
)

Compare two points and see if they're the same, using a threshold.

Public function Const

TVector< T >

 

Projection()

Projects 2D components of vector based on Z.

Public function Const

TVector< T >

 

ProjectOnTo

(
    const TVector< T >& A
)

Gets a copy of this vector projected onto the input vector.

Public function Const

TVector< T >

 

ProjectOnToNormal

(
    const TVector< T >& Normal
)

Gets a copy of this vector projected onto the input vector, which is assumed to be unit length.

Public function Static

TVector< T >

 

RadiansToDegrees

(
    const TVector< T >& RadVector
)

Converts a vector containing radian values to a vector containing degree values.

Public function Const

TVector< T >

 

Reciprocal()

Gets the reciprocal of this vector, avoiding division by zero.

Public function Const

TVector< T >

 

RotateAngleAxis

(
    const T AngleDeg,
    const TVector< T >& Axis
)

Rotates around Axis (assumes Axis.Size() == 1).

Public function Const

UE::Math::TR...

 

Rotation()

Return the UE::Math::TRotator orientation corresponding to the direction in which the vector points.

Public function

bool

 

Serialize

(
    FStructuredArchive::FSlot Slot
)

Public function

bool

 

SerializeFromMismatchedTag

(
    FName StructTag,
    FStructuredArchive::FSlot Slot
)

Public function

void

 

Set

(
    T InX,
    T InY,
    T InZ
)

Set the values of the vector directly.

Public function

void

 

SetComponentForAxis

(
    EAxis::Type Axis,
    T Component
)

Set a specified componet of the vector, given a specific axis by enum

Public function Const

T

 

Size()

Get the length (magnitude) of this vector.

Public function Const

T

 

Size2D()

Get the length of the 2D components of this vector.

Public function Const

T

 

SizeSquared()

Get the squared length of this vector.

Public function Const

T

 

SizeSquared2D()

Get the squared length of the 2D components of this vector.

Public function Const

T

 

SquaredLength()

Get the squared length of this vector.

Public function Const

FString

 

ToCompactString()

Get a short textural representation of this vector, for compact readable logging.

Public function Const

FText

 

ToCompactText()

Get a short locale aware textural representation of this vector, for compact readable logging.

Public function Const

void

 

ToDirectionAndLength

(
    TVector< T >& OutDir,
    double& OutLength
)

Util to convert this vector into a unit direction vector and its original length.

Public function Const

void

 

ToDirectionAndLength

(
    TVector< T >& OutDir,
    float& OutLength
)

Util to convert this vector into a unit direction vector and its original length.

Public function Const

TQuat< T >

 

ToOrientationQuat()

Return the Quaternion orientation corresponding to the direction in which the vector points.

Public function Const

TRotator< T ...

 

ToOrientationRotator()

Return the TRotator orientation corresponding to the direction in which the vector points.

Public function Const

FString

 

ToString()

Get a textual representation of this vector.

Public function Const

FText

 

ToText()

Get a locale aware textual representation of this vector.

Public function Static

T

 

Triple

(
    const TVector< T >& X,
    const TVector< T >& Y,
    const TVector< T >& Z
)

Triple product of three vectors: X dot (Y cross Z).

Public function Const

TVector2< T ...

 

UnitCartesianToSpherical()

Converts a Cartesian unit vector into spherical coordinates on the unit sphere.

Public function Static

TVector< T >

 

UnitX()

Public function Static

TVector< T >

 

UnitY()

Public function Static

TVector< T >

 

UnitZ()

Public function

void

 

UnwindEuler()

When this vector contains Euler angles (degrees), ensure that angles are between +/-180

Public function Static

TVector< T >

 

VectorPlaneProject

(
    const TVector< T >& V,
    const TVector< T >& PlaneNormal
)

Calculate the projection of a vector on the plane defined by PlaneNormal.

Public function Static

TVector< T >

 

Zero()

Operators

Name Description

Public function Const

TVector< T >

 

operator-()

Get a negated copy of the vector.

Public function Const

TVector< T >

 

operator-

(
    const TVector< T >& V
)

Gets the result of component-wise subtraction of this by another vector.

Public function Const

TVector< T >

 

operator-

(
    FArg Bias
)

Gets the result of subtracting from each component of the vector.

Public function Const

bool

 

operator!=

(
    const TVector< T >& V
)

Check against another vector for inequality.

Public function Const

TVector< T >

 

operator*

(
    const TVector< T >& V
)

Gets the result of component-wise multiplication of this vector by another.

Public function Const

TVector< T >

 

operator*

(
    FArg Scale
)

Gets the result of scaling the vector (multiplying each component by a value).

Public function

TVector< T >

 

operator*=

(
    const TVector< T >& V
)

Multiplies the vector with another vector, using component-wise multiplication.

Public function

TVector< T >

 

operator*=

(
    FArg Scale
)

Scales the vector.

Public function Const

TVector< T >

 

operator/

(
    const TVector< T >& V
)

Gets the result of component-wise division of this vector by another.

Public function Const

TVector< T >

 

operator/

(
    FArg Scale
)

Gets the result of dividing each component of the vector by a value.

Public function

TVector< T >

 

operator/=

(
    const TVector< T >& V
)

Divides the vector by another vector, using component-wise division.

Public function

TVector< T >

 

operator/=

(
    FArg Scale
)

Divides the vector by a number.

Public function Const

T

 

operator[]

(
    int32 Index
)

Gets specific component of the vector.

Public function

T &

 

operator[]

(
    int32 Index
)

Gets specific component of the vector.

Public function Const

TVector< T >

 

operator^

(
    const TVector< T >& V
)

Calculate cross product between this and another vector.

Public function Const

T

 

operator|

(
    const TVector< T >& V
)

Calculate the dot product between this and another vector.

Public function Const

TVector< T >

 

operator+

(
    FArg Bias
)

Gets the result of adding to each component of the vector.

Public function Const

TVector< T >

 

operator+

(
    const TVector< T >& V
)

Gets the result of component-wise addition of this and another vector.

Public function

TVector< T >

 

operator+=

(
    const TVector< T >& V
)

Adds another vector to this. Uses component-wise addition.

Public function

TVector< T >

 

operator-=

(
    const TVector< T >& V
)

Subtracts another vector from this. Uses component-wise subtraction.

Public function Const

bool

 

operator==

(
    const TVector< T >& V
)

Check against another vector for equality.

Typedefs

Name

Description

FReal

Constants

Name

Description

BackwardVector

Unreal backward vector (-1,0,0)

DownVector

Unreal down vector (0,0,-1)

ForwardVector

Unreal forward vector (1,0,0)

LeftVector

Unreal left vector (0,-1,0)

OneVector

One vector (1,1,1)

RightVector

Unreal right vector (0,1,0)

UpVector

Unreal up vector (0,0,1)

XAxisVector

Unit X axis vector (1,0,0)

YAxisVector

Unit Y axis vector (0,1,0)

ZAxisVector

Unit Z axis vector (0,0,1)

ZeroVector

A zero vector (0,0,0)