TFrame3

[TFrame3](API\Runtime\GeometryCore\TFrame3) is an object that represents an oriented 3D coordinate frame, ie orthogonal X/Y/Z axes at a point in space.

Choose your operating system:

Windows

macOS

Linux

References

Module

GeometryCore

Header

/Engine/Source/Runtime/GeometryCore/Public/FrameTypes.h

Include

#include "FrameTypes.h"

Syntax

template<typename RealType>
struct TFrame3

Remarks

TFrame3 is an object that represents an oriented 3D coordinate frame, ie orthogonal X/Y/Z axes at a point in space. One can think of this Frame as a local coordinate space measured along these axes. Functions are provided to map geometric objects to/from the Frame coordinate space.

Internally the representation is the same as an FTransform, except a Frame has no Scale.

Variables

Name Description

Public variable

TVector< RealTy...

 

Origin

Origin of the frame

Public variable

TQuaternion< Re...

 

Rotation

Rotation of the frame. Think of this as the rotation of the unit X/Y/Z axes to the 3D frame axes.

Constructors

Name Description

Public function

TFrame3()

Construct a frame positioned at (0,0,0) aligned to the unit axes

Public function

TFrame3

(
    const TVector< RealType >& OriginI...
)

Construct a frame at the given Origin aligned to the unit axes

Public function

TFrame3

(
    const FTransform& Transform
)

Construct a Frame from an FTransform

Public function

TFrame3

(
    const FPlane& Plane
)

Construct a Frame from an FPlane

Public function

TFrame3

(
    const TFrame3< RealType2 >& OtherF...
)

Convert between TFrame of different types

Public function

TFrame3

(
    const TVector< RealType >& OriginI...,
    const TQuaternion< RealType > Rotat...
)

Construct a Frame from the given Origin and Rotation

Public function

TFrame3

(
    const TVector< RealType >& OriginI...,
    const TVector< RealType >& SetZ
)

Construct a frame with the Z axis aligned to a target axis

Public function

TFrame3

(
    const FVector& OriginIn,
    const FQuat& RotationIn
)

Construct a Frame from an FVector and FQuat

Public function

TFrame3

(
    const TVector< RealType >& OriginI...,
    const TVector< RealType >& X,
    const TVector< RealType >& Y,
    const TVector< RealType >& Z
)

Construct Frame from X/Y/Z axis vectors. Vectors must be mutually orthogonal.

Functions

Name Description

Public function

void

 

AlignAxis

(
    int AxisIndex,
    const TVector< RealType >& ToDirec...
)

Align an axis of this frame with a target direction

Public function

void

 

ConstrainedAlignAxis

(
    int AxisIndex,
    const TVector< RealType >& ToDirec...,
    const TVector< RealType >& AroundV...
)

Compute rotation around vector that best-aligns axis of frame with target direction

Public function

void

 

ConstrainedAlignPerpAxes

(
    int PerpAxis1,
    int PerpAxis2,
    int NormalAxis,
    const TVector< RealType >& UpAxis,
    const TVector< RealType >& Fallbac...,
    RealType UpDotTolerance
)

Compute rotation around NormalAxis that best-aligns one of the other two frame axes with either given UpAxis or FallbackAxis (FallbackAxis is required if Dot(NormalAxis,UpAxis) > UpDotTolerance, ie if the Normal and Up directions are too closely aligned. Basically this divides direction-sphere into three regions - polar caps with size defined by UpDotTolerance, and a wide equator band covering the rest. When crossing between these regions the alignment has a discontinuity. It is impossible to avoid this discontinuity because it is impossible to comb a sphere.

Public function Const

TFrame3< Rea...

 

FromFrame

(
    const TFrame3< RealType >& Frame
)

Public function Const

TQuaternion<...

 

FromFrame

(
    const TQuaternion< RealType >& Qua...
)

Public function Const

TRay< RealTy...

 

FromFrame

(
    const TRay< RealType >& Ray
)

Public function Const

TVector< Rea...

 

FromFramePoint

(
    const TVector< RealType >& Point
)

Public function Const

TVector< Rea...

 

FromFrameVector

(
    const TVector< RealType >& Vector
)

Public function Const

TVector< Rea...

 

FromPlaneUV

(
    const TVector2< RealType >& PosUV,
    int PlaneNormalAxis
)

Map a point from local UV plane coordinates to the corresponding 3D point in one of the planes of the frame

Public function Const

void

 

GetAxes

(
    TVector< RealType >& X,
    TVector< RealType >& Y,
    TVector< RealType >& Z
)

Public function Const

TVector< Rea...

 

GetAxis

(
    int AxisIndex
)

Public function Const

TVector< Rea...

 

PointAt

(
    RealType X,
    RealType Y,
    RealType Z
)

Public function Const

TVector< Rea...

 

PointAt

(
    const TVector< RealType >& Point
)

Public function Const

bool

 

RayPlaneIntersection

(
    const TVector< RealType >& RayOrig...,
    const TVector< RealType >& RayDire...,
    int PlaneNormalAxis,
    UE::Math::TVector< RealType >& Hit...
)

Compute intersection of ray with plane defined by frame origin and axis as normal

Public function

void

 

Rotate

(
    const TQuaternion< RealType >& Qua...
)

Rotate this frame by given quaternion

Public function Const

FPlane

 

ToFPlane()

Public function Const

TRay< RealTy...

 

ToFrame

(
    const TRay< RealType >& Ray
)

Public function Const

TFrame3< Rea...

 

ToFrame

(
    const TFrame3< RealType >& Frame
)

Public function Const

TQuaternion<...

 

ToFrame

(
    const TQuaternion< RealType >& Qua...
)

Public function Const

TVector< Rea...

 

ToFramePoint

(
    const TVector< RealType >& Point
)

Public function Const

TVector< Rea...

 

ToFrameVector

(
    const TVector< RealType >& Vector
)

Public function Const

FTransform

 

ToFTransform()

Public function Const

TVector< Rea...

 

ToPlane

(
    const TVector< RealType >& Pos,
    int PlaneNormalAxis
)

Project a point onto one of the planes of the frame

Public function Const

TVector2< Re...

 

ToPlaneUV

(
    const TVector< RealType >& Pos,
    int PlaneNormalAxis
)

Project 3D point into plane and convert to UV coordinates in that plane

Public function Const

TTransform3<...

 

ToTransform()

Public function

void

 

Transform

(
    const TTransform3< RealType >& XFo...
)

Transform this frame by the given transform

Public function

void

 

Transform

(
    const FTransform& XForm
)

Transform this frame by the given transform

Public function Const

TVector< Rea...

 

X()

Public function Const

TVector< Rea...

 

Y()

Public function Const

TVector< Rea...

 

Z()