FVector

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

Windows
MacOS
Linux

Inheritance Hierarchy

References

Module

Core

Header

/Engine/Source/Runtime/Core/Public/Math/Vector.h

Include

#include "Math/Vector.h"

Syntax

struct FVector

Remarks

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

Variables

Name Description

Public variable

float

 

X

Vector's X component.

Public variable

float

 

Y

Vector's Y component.

Public variable

float

 

Z

Vector's Z component.

Constructors

Name Description

Public function

FVector()

Default constructor (no initialization).

Public function

FVector

(
    float InF
)

Constructor initializing all components to a single float value.

Public function

FVector

(
    const FVector4& V
)

Constructor using the XYZ components from a 4D vector.

Public function

FVector

(
    const FLinearColor& InColor
)

Constructs a vector from an FLinearColor.

Public function

FVector

(
    FIntVector InVector
)

Constructs a vector from an FIntVector.

Public function

FVector

(
    FIntPoint A
)

Constructs a vector from an FIntPoint.

Public function

FVector

(
    EForceInit
)

Constructor which initializes all components to zero.

Public function

FVector

(
    const FVector2D V,
    float InZ
)

Constructs a vector from an FVector2D and Z value.

Public function

FVector

(
    float InX,
    float InY,
    float InZ
)

Constructor using initial values for each component.

Functions

Name Description

Public function

void

 

AddBounded

(
    const FVector& V,
    float Radius
)

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

Public function Const

bool

 

AllComponentsEqual

(
    float Tolerance
)

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

Public function Const

FVector

 

BoundToBox

(
    const FVector& Min,
    const FVector Max
)

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

Public function Const

FVector

 

BoundToCube

(
    float Radius
)

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

Public function Static

float

 

BoxPushOut

(
    const FVector& Normal,
    const FVector& Size
)

Compute pushout of a box from a plane.

Public function Static

bool

 

Coincident

(
    const FVector& Normal1,
    const FVector& Normal2,
    float ParallelCosineThreshold
)

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

Public function Const

float

 

Component

(
    int32 Index
)

Gets a specific component of the vector.

Public function

float &

 

Component

(
    int32 Index
)

Gets a specific component of the vector.

Public function Const

FVector

 

ComponentMax

(
    const FVector& Other
)

Gets the component-wise max of two vectors.

Public function Const

FVector

 

ComponentMin

(
    const FVector& 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 FVector& Base1,
    const FVector& Normal1,
    const FVector& Base2,
    const FVector& Normal2,
    float ParallelCosineThreshold
)

See if two planes are coplanar.

Public function Const

float

 

CosineAngle2D

(
    FVector B
)

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

Public function Static

void

 

CreateOrthonormalBasis

(
    FVector& XAxis,
    FVector& YAxis,
    FVector& ZAxis
)

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

Public function Static

FVector

 

CrossProduct

(
    const FVector& A,
    const FVector& B
)

Calculate the cross product of two vectors.

Public function Static

FVector

 

DegreesToRadians

(
    const FVector& DegVector
)

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

Public function Const

void

 

DiagnosticCheckNaN()

Public function Const

void

 

DiagnosticCheckNaN

(
    const TCHAR* Message
)

Public function Static

float

 

Dist

(
    const FVector& V1,
    const FVector& V2
)

Euclidean distance between two points.

Public function Static

float

 

Dist2D

(
    const FVector& V1,
    const FVector& V2
)

Public function Static

float

 

Distance

(
    const FVector& V1,
    const FVector& V2
)

Public function Static

float

 

DistSquared

(
    const FVector& V1,
    const FVector& V2
)

Squared distance between two points.

Public function Static

float

 

DistSquared2D

(
    const FVector& V1,
    const FVector& V2
)

Public function Static

float

 

DistSquaredXY

(
    const FVector& V1,
    const FVector& V2
)

Squared distance between two points in the XY plane only.

Public function Static

float

 

DistXY

(
    const FVector& V1,
    const FVector& V2
)

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

Public function Static

float

 

DotProduct

(
    const FVector& A,
    const FVector& B
)

Calculate the dot product of two vectors.

Public function Const

bool

 

Equals

(
    const FVector& V,
    float Tolerance
)

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

Public function Static

float

 

EvaluateBezier

(
    const FVector* ControlPoints,
    int32 NumPoints,
    TArray< FVector >& OutPoints
)

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

Public function Const

void

 

FindBestAxisVectors

(
    FVector& Axis1,
    FVector& 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< FVector >& Clusters,
    const TArray< FVector >& Points,
    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

FVector

 

GetAbs()

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

Public function Const

float

 

GetAbsMax()

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

Public function Const

float

 

GetAbsMin()

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

Public function Const

FVector

 

GetClampedToMaxSize

(
    float MaxSize
)

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

Public function Const

FVector

 

GetClampedToMaxSize2D

(
    float MaxSize
)

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

Public function Const

FVector

 

GetClampedToSize

(
    float Min,
    float Max
)

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

Public function Const

FVector

 

GetClampedToSize2D

(
    float Min,
    float Max
)

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

Public function Const

float

 

GetComponentForAxis

(
    EAxis::Type Axis
)

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

Public function Const

float

 

GetMax()

Get the maximum value of the vector's components.

Public function Const

float

 

GetMin()

Get the minimum value of the vector's components.

Public function Const

FVector

 

GetSafeNormal

(
    float Tolerance
)

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

Public function Const

FVector

 

GetSafeNormal2D

(
    float Tolerance
)

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

Public function Const

FVector

 

GetSignVector()

Get a copy of the vector as sign only.

Public function Const

FVector

 

GetUnsafeNormal()

Calculates normalized version of vector without checking for zero length.

Public function Const

FVector

 

GetUnsafeNormal2D()

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

Public function Const

FVector

 

GridSnap

(
    const float& GridSz
)

Gets a copy of this vector snapped to a grid.

Public function Const

float

 

HeadingAngle()

Convert a direction vector into a 'heading' angle.

Public function

bool

 

InitFromString

(
    const FString& InSourceString
)

Initialize this Vector based on an FString.

Public function Const

bool

 

IsNearlyZero

(
    float 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

(
    float Tolerance
)

Check whether X, Y and Z are nearly equal.

Public function Const

bool

 

IsUnit

(
    float 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

FVector

 

MirrorByPlane

(
    const FPlane& Plane
)

Mirrors a vector about a plane.

FVector inline functions

Public function Const

FVector

 

MirrorByVector

(
    const FVector& 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

(
    float Tolerance
)

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

Public function Static

bool

 

Orthogonal

(
    const FVector& Normal1,
    const FVector& Normal2,
    float 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 FVector& Normal1,
    const FVector& Normal2,
    float ParallelCosineThreshold
)

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

Public function Static

float

 

PointPlaneDist

(
    const FVector& Point,
    const FVector& PlaneBase,
    const FVector& PlaneNormal
)

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

Public function Static

FVector

 

PointPlaneProject

(
    const FVector& Point,
    const FVector& A,
    const FVector& B,
    const FVector& C
)

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

Public function Static

FVector

 

PointPlaneProject

(
    const FVector& Point,
    const FVector& PlaneBase,
    const FVector& PlaneNormal
)

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

Public function Static

FVector

 

PointPlaneProject

(
    const FVector& Point,
    const FPlane& Plane
)

Calculate the projection of a point on the given plane.

Public function Static

bool

 

PointsAreNear

(
    const FVector& Point1,
    const FVector& Point2,
    float Dist
)

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

Public function Static

bool

 

PointsAreSame

(
    const FVector& P,
    const FVector& Q
)

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

Public function Const

FVector

 

Projection()

Projects 2D components of vector based on Z.

Public function Const

FVector

 

ProjectOnTo

(
    const FVector& A
)

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

Public function Const

FVector

 

ProjectOnToNormal

(
    const FVector& Normal
)

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

Public function Static

FVector

 

RadiansToDegrees

(
    const FVector& RadVector
)

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

Public function Const

FVector

 

Reciprocal()

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

Public function Const

FVector

 

RotateAngleAxis

(
    const float AngleDeg,
    const FVector& Axis
)

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

Public function Const

FRotator

 

Rotation()

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

Public function

bool

 

Serialize

(
    FArchive& Ar
)

Public function

bool

 

Serialize

(
    FStructuredArchive::FSlot Slot
)

Public function

void

 

Set

(
    float InX,
    float InY,
    float InZ
)

Set the values of the vector directly.

Public function

void

 

SetComponentForAxis

(
    EAxis::Type Axis,
    float Component
)

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

Public function Const

float

 

Size()

Get the length (magnitude) of this vector.

Public function Const

float

 

Size2D()

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

Public function Const

float

 

SizeSquared()

Get the squared length of this vector.

Public function Const

float

 

SizeSquared2D()

Get the squared length of the 2D components 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

(
    FVector& OutDir,
    float& OutLength
)

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

Public function Const

FQuat

 

ToOrientationQuat()

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

Public function Const

FRotator

 

ToOrientationRotator()

Return the FRotator 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

float

 

Triple

(
    const FVector& X,
    const FVector& Y,
    const FVector& Z
)

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

Public function Const

FVector2D

 

UnitCartesianToSpherical()

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

Public function

void

 

UnwindEuler()

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

Public function Static

FVector

 

VectorPlaneProject

(
    const FVector& V,
    const FVector& PlaneNormal
)

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

Operators

Name Description

Public function Const

FVector

 

operator-()

Get a negated copy of the vector.

Public function Const

FVector

 

operator-

(
    const FVector& V
)

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

Public function Const

FVector

 

operator-

(
    float Bias
)

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

Public function Const

bool

 

operator!=

(
    const FVector& V
)

Check against another vector for inequality.

Public function Const

FVector

 

operator*

(
    float Scale
)

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

Public function Const

FVector

 

operator*

(
    const FVector& V
)

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

Public function

FVector

 

operator*=

(
    float Scale
)

Scales the vector.

Public function

FVector

 

operator*=

(
    const FVector& V
)

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

Public function Const

FVector

 

operator/

(
    float Scale
)

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

Public function Const

FVector

 

operator/

(
    const FVector& V
)

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

Public function

FVector

 

operator/=

(
    float V
)

Divides the vector by a number.

Public function

FVector

 

operator/=

(
    const FVector& V
)

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

Public function

float &

 

operator[]

(
    int32 Index
)

Gets specific component of the vector.

Public function Const

float

 

operator[]

(
    int32 Index
)

Gets specific component of the vector.

Public function Const

FVector

 

operator^

(
    const FVector& V
)

Calculate cross product between this and another vector.

Public function Const

float

 

operator|

(
    const FVector& V
)

Calculate the dot product between this and another vector.

Public function Const

FVector

 

operator+

(
    const FVector& V
)

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

Public function Const

FVector

 

operator+

(
    float Bias
)

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

Public function

FVector

 

operator+=

(
    const FVector& V
)

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

Public function

FVector

 

operator-=

(
    const FVector& V
)

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

Public function Const

bool

 

operator==

(
    const FVector& V
)

Check against another vector for equality.

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)

ZeroVector

A zero vector (0,0,0)

Math stats

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback