GfRotation Class Reference

Basic type: 3-space rotation specification. More...

Public Member Functions

 GfRotation ()
 The default constructor leaves the rotation undefined. More...
 
 GfRotation (const GfVec3d &axis, double angle)
 This constructor initializes the rotation to be angle degrees about axis. More...
 
 GfRotation (const GfQuaternion &quaternion)
 This constructor initializes the rotation from a quaternion. More...
 
 GfRotation (const GfQuatd &quat)
 This constructor initializes the rotation from a quaternion. More...
 
GF_API GfRotation (const GfVec3d &rotateFrom, const GfVec3d &rotateTo)
 This constructor initializes the rotation to one that brings the rotateFrom vector to align with rotateTo. More...
 
GfRotationSetAxisAngle (const GfVec3d &axis, double angle)
 Sets the rotation to be angle degrees about axis. More...
 
GF_API GfRotationSetQuat (const GfQuatd &quat)
 Sets the rotation from a quaternion. More...
 
GfRotationSetQuaternion (const GfQuaternion &quat)
 Sets the rotation from a quaternion. More...
 
GF_API GfRotationSetRotateInto (const GfVec3d &rotateFrom, const GfVec3d &rotateTo)
 Sets the rotation to one that brings the rotateFrom vector to align with rotateTo. More...
 
GfRotationSetIdentity ()
 Sets the rotation to an identity rotation. More...
 
const GfVec3dGetAxis () const
 Returns the axis of rotation. More...
 
double GetAngle () const
 Returns the rotation angle in degrees. More...
 
GfQuaternion GetQuaternion () const
 Returns the rotation expressed as a quaternion. More...
 
GF_API GfQuatd GetQuat () const
 Returns the rotation expressed as a quaternion. More...
 
GfRotation GetInverse () const
 Returns the inverse of this rotation. More...
 
GF_API GfVec3d Decompose (const GfVec3d &axis0, const GfVec3d &axis1, const GfVec3d &axis2) const
 Decompose rotation about 3 orthogonal axes. More...
 
GF_API GfVec3f TransformDir (const GfVec3f &vec) const
 Transforms row vector vec by the rotation, returning the result. More...
 
GF_API GfVec3d TransformDir (const GfVec3d &vec) const
 
bool operator== (const GfRotation &r) const
 Component-wise rotation equality test. More...
 
bool operator != (const GfRotation &r) const
 Component-wise rotation inequality test. More...
 
GF_API GfRotationoperator *= (const GfRotation &r)
 Post-multiplies rotation r into this rotation. More...
 
GfRotationoperator *= (double scale)
 Scales rotation angle by multiplying by scale. More...
 
GfRotationoperator/= (double scale)
 Scales rotation angle by dividing by scale. More...
 

Static Public Member Functions

static GF_API void DecomposeRotation (const GfMatrix4d &rot, const GfVec3d &TwAxis, const GfVec3d &FBAxis, const GfVec3d &LRAxis, double handedness, double *thetaTw, double *thetaFB, double *thetaLR, double *thetaSw=nullptr, bool useHint=false, const double *swShift=nullptr)
 
static GF_API GfRotation RotateOntoProjected (const GfVec3d &v1, const GfVec3d &v2, const GfVec3d &axis)
 
static GF_API void MatchClosestEulerRotation (double targetTw, double targetFB, double targetLR, double targetSw, double *thetaTw, double *thetaFB, double *thetaLR, double *thetaSw)
 Replace the hint angles with the closest rotation of the given rotation to the hint. More...
 

Friends

size_t hash_value (const GfRotation &r)
 Hash. More...
 
GfRotation operator * (const GfRotation &r1, const GfRotation &r2)
 Returns composite rotation of rotations r1 and r2. More...
 
GfRotation operator * (const GfRotation &r, double scale)
 Returns a rotation equivalent to r with its angle multiplied by scale. More...
 
GfRotation operator * (double scale, const GfRotation &r)
 Returns a rotation equivalent to r with its angle multiplied by scale. More...
 
GfRotation operator/ (const GfRotation &r, double scale)
 Returns a rotation equivalent to r with its angle divided by scale. More...
 

Detailed Description

Basic type: 3-space rotation specification.

This class represents a rotation in 3-space. This stores an axis as a normalized vector of 3 doubles and an angle in degrees (as a double). Rotations follow the right-hand rule: a positive rotation about an axis vector appears counter-clockwise when looking from the end of the vector toward the origin.

Definition at line 55 of file rotation.h.

Constructor & Destructor Documentation

◆ GfRotation() [1/5]

GfRotation ( )
inline

The default constructor leaves the rotation undefined.

Definition at line 60 of file rotation.h.

◆ GfRotation() [2/5]

GfRotation ( const GfVec3d axis,
double  angle 
)
inline

This constructor initializes the rotation to be angle degrees about axis.

Definition at line 65 of file rotation.h.

◆ GfRotation() [3/5]

GfRotation ( const GfQuaternion quaternion)
inline

This constructor initializes the rotation from a quaternion.

Definition at line 70 of file rotation.h.

◆ GfRotation() [4/5]

GfRotation ( const GfQuatd quat)
inline

This constructor initializes the rotation from a quaternion.

Note that this constructor accepts GfQuatf and GfQuath since they implicitly convert to GfQuatd.

Definition at line 77 of file rotation.h.

◆ GfRotation() [5/5]

GF_API GfRotation ( const GfVec3d rotateFrom,
const GfVec3d rotateTo 
)
inline

This constructor initializes the rotation to one that brings the rotateFrom vector to align with rotateTo.

The passed vectors need not be unit length.

Definition at line 83 of file rotation.h.

Member Function Documentation

◆ Decompose()

GF_API GfVec3d Decompose ( const GfVec3d axis0,
const GfVec3d axis1,
const GfVec3d axis2 
) const

Decompose rotation about 3 orthogonal axes.

If the axes are not orthogonal, warnings will be spewed.

◆ GetAngle()

double GetAngle ( ) const
inline

Returns the rotation angle in degrees.

Definition at line 127 of file rotation.h.

◆ GetAxis()

const GfVec3d& GetAxis ( ) const
inline

Returns the axis of rotation.

Definition at line 122 of file rotation.h.

◆ GetInverse()

GfRotation GetInverse ( ) const
inline

Returns the inverse of this rotation.

Definition at line 142 of file rotation.h.

◆ GetQuat()

GF_API GfQuatd GetQuat ( ) const

Returns the rotation expressed as a quaternion.

◆ GetQuaternion()

GfQuaternion GetQuaternion ( ) const
inline

Returns the rotation expressed as a quaternion.

Definition at line 132 of file rotation.h.

◆ MatchClosestEulerRotation()

static GF_API void MatchClosestEulerRotation ( double  targetTw,
double  targetFB,
double  targetLR,
double  targetSw,
double *  thetaTw,
double *  thetaFB,
double *  thetaLR,
double *  thetaSw 
)
static

Replace the hint angles with the closest rotation of the given rotation to the hint.

Each angle in the rotation will be within Pi of the corresponding hint angle and the sum of the differences with the hint will be minimized. If a given rotation value is null then that angle will be treated as 0.0 and ignored in the calculations.

All angles are in radians. The rotation order is Tw/FB/LR/Sw.

◆ operator !=()

bool operator != ( const GfRotation r) const
inline

Component-wise rotation inequality test.

The axes and angles must match exactly for rotations to be considered equal. (To compare equality of the actual rotations, you can convert both to quaternions and test the results for equality.)

Definition at line 243 of file rotation.h.

◆ operator *=() [1/2]

GF_API GfRotation& operator *= ( const GfRotation r)

Post-multiplies rotation r into this rotation.

◆ operator *=() [2/2]

GfRotation& operator *= ( double  scale)
inline

Scales rotation angle by multiplying by scale.

Definition at line 252 of file rotation.h.

◆ operator/=()

GfRotation& operator/= ( double  scale)
inline

Scales rotation angle by dividing by scale.

Definition at line 258 of file rotation.h.

◆ operator==()

bool operator== ( const GfRotation r) const
inline

Component-wise rotation equality test.

The axes and angles must match exactly for rotations to be considered equal. (To compare equality of the actual rotations, you can convert both to quaternions and test the results for equality.)

Definition at line 234 of file rotation.h.

◆ SetAxisAngle()

GfRotation& SetAxisAngle ( const GfVec3d axis,
double  angle 
)
inline

Sets the rotation to be angle degrees about axis.

Definition at line 88 of file rotation.h.

◆ SetIdentity()

GfRotation& SetIdentity ( )
inline

Sets the rotation to an identity rotation.

(This is chosen to be 0 degrees around the positive X axis.)

Definition at line 115 of file rotation.h.

◆ SetQuat()

GF_API GfRotation& SetQuat ( const GfQuatd quat)

Sets the rotation from a quaternion.

Note that this method accepts GfQuatf and GfQuath since they implicitly convert to GfQuatd.

◆ SetQuaternion()

GfRotation& SetQuaternion ( const GfQuaternion quat)
inline

Sets the rotation from a quaternion.

Definition at line 102 of file rotation.h.

◆ SetRotateInto()

GF_API GfRotation& SetRotateInto ( const GfVec3d rotateFrom,
const GfVec3d rotateTo 
)

Sets the rotation to one that brings the rotateFrom vector to align with rotateTo.

The passed vectors need not be unit length.

◆ TransformDir() [1/2]

GF_API GfVec3f TransformDir ( const GfVec3f vec) const

Transforms row vector vec by the rotation, returning the result.

◆ TransformDir() [2/2]

GF_API GfVec3d TransformDir ( const GfVec3d vec) const

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Friends And Related Function Documentation

◆ hash_value

size_t hash_value ( const GfRotation r)
friend

Hash.

Definition at line 223 of file rotation.h.

◆ operator * [1/3]

GfRotation operator * ( const GfRotation r1,
const GfRotation r2 
)
friend

Returns composite rotation of rotations r1 and r2.

Definition at line 264 of file rotation.h.

◆ operator * [2/3]

GfRotation operator * ( const GfRotation r,
double  scale 
)
friend

Returns a rotation equivalent to r with its angle multiplied by scale.

Definition at line 272 of file rotation.h.

◆ operator * [3/3]

GfRotation operator * ( double  scale,
const GfRotation r 
)
friend

Returns a rotation equivalent to r with its angle multiplied by scale.

Definition at line 279 of file rotation.h.

◆ operator/

GfRotation operator/ ( const GfRotation r,
double  scale 
)
friend

Returns a rotation equivalent to r with its angle divided by scale.

Definition at line 285 of file rotation.h.


The documentation for this class was generated from the following file: