# 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.

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

TVector< RealTy...

Origin

Origin of the frame

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

TFrame3()

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

TFrame3

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

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

TFrame3

(
const FTransform& Transform
)

Construct a Frame from an FTransform

TFrame3

(
const FPlane& Plane
)

Construct a Frame from an FPlane

TFrame3

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

Convert between TFrame of different types

TFrame3

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

Construct a Frame from the given Origin and Rotation

TFrame3

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

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

TFrame3

(
const FVector& OriginIn,
const FQuat& RotationIn
)

Construct a Frame from an FVector and FQuat

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

void

AlignAxis

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

Align an axis of this frame with a target direction

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

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.

TFrame3< Rea...

FromFrame

(
const TFrame3< RealType >& Frame
)

TQuaternion<...

FromFrame

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

TRay< RealTy...

FromFrame

(
const TRay< RealType >& Ray
)

TVector< Rea...

FromFramePoint

(
const TVector< RealType >& Point
)

TVector< Rea...

FromFrameVector

(
const TVector< RealType >& Vector
)

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

void

GetAxes

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

TVector< Rea...

GetAxis

(
int AxisIndex
)

TVector< Rea...

PointAt

(
RealType X,
RealType Y,
RealType Z
)

TVector< Rea...

PointAt

(
const TVector< RealType >& Point
)

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

void

Rotate

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

Rotate this frame by given quaternion

FPlane

ToFPlane()

TRay< RealTy...

ToFrame

(
const TRay< RealType >& Ray
)

TFrame3< Rea...

ToFrame

(
const TFrame3< RealType >& Frame
)

TQuaternion<...

ToFrame

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

TVector< Rea...

ToFramePoint

(
const TVector< RealType >& Point
)

TVector< Rea...

ToFrameVector

(
const TVector< RealType >& Vector
)

FTransform

ToFTransform()

TVector< Rea...

ToPlane

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

Project a point onto one of the planes of the frame

TVector2< Re...

ToPlaneUV

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

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

TTransform3<...

ToTransform()

void

Transform

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

Transform this frame by the given transform

void

Transform

(
const FTransform& XForm
)

Transform this frame by the given transform

TVector< Rea...

X()

TVector< Rea...

Y()

TVector< Rea...

Z()