HDK
|
#include <rotation.h>
Public Member Functions | |
GfRotation () | |
The default constructor leaves the rotation undefined. More... | |
GfRotation (const GfVec3d &axis, double angle) | |
GfRotation (const GfQuaternion &quaternion) | |
This constructor initializes the rotation from a quaternion. More... | |
GfRotation (const GfQuatd &quat) | |
GF_API | GfRotation (const GfVec3d &rotateFrom, const GfVec3d &rotateTo) |
GfRotation & | SetAxisAngle (const GfVec3d &axis, double angle) |
Sets the rotation to be angle degrees about axis . More... | |
GF_API GfRotation & | SetQuat (const GfQuatd &quat) |
GfRotation & | SetQuaternion (const GfQuaternion &quat) |
Sets the rotation from a quaternion. More... | |
GF_API GfRotation & | SetRotateInto (const GfVec3d &rotateFrom, const GfVec3d &rotateTo) |
GfRotation & | SetIdentity () |
const GfVec3d & | GetAxis () 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 |
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 |
bool | operator!= (const GfRotation &r) const |
GF_API GfRotation & | operator*= (const GfRotation &r) |
Post-multiplies rotation r into this rotation. More... | |
GfRotation & | operator*= (double scale) |
Scales rotation angle by multiplying by scale . More... | |
GfRotation & | operator/= (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) |
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) |
GfRotation | operator* (double scale, const GfRotation &r) |
GfRotation | operator/ (const GfRotation &r, double scale) |
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 54 of file rotation.h.
|
inline |
The default constructor leaves the rotation undefined.
Definition at line 59 of file rotation.h.
|
inline |
This constructor initializes the rotation to be angle
degrees about axis
.
Definition at line 64 of file rotation.h.
|
inline |
This constructor initializes the rotation from a quaternion.
Definition at line 69 of file rotation.h.
|
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 76 of file rotation.h.
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 82 of file rotation.h.
GF_API GfVec3d GfRotation::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.
|
static |
|
inline |
Returns the rotation angle in degrees.
Definition at line 126 of file rotation.h.
|
inline |
Returns the axis of rotation.
Definition at line 121 of file rotation.h.
|
inline |
Returns the inverse of this rotation.
Definition at line 141 of file rotation.h.
|
inline |
Returns the rotation expressed as a quaternion.
Definition at line 131 of file rotation.h.
|
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.
|
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 239 of file rotation.h.
GF_API GfRotation& GfRotation::operator*= | ( | const GfRotation & | r | ) |
Post-multiplies rotation r
into this rotation.
|
inline |
Scales rotation angle by multiplying by scale
.
Definition at line 248 of file rotation.h.
|
inline |
Scales rotation angle by dividing by scale
.
Definition at line 254 of file rotation.h.
|
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 230 of file rotation.h.
|
static |
|
inline |
Sets the rotation to be angle
degrees about axis
.
Definition at line 87 of file rotation.h.
|
inline |
Sets the rotation to an identity rotation. (This is chosen to be 0 degrees around the positive X axis.)
Definition at line 114 of file rotation.h.
GF_API GfRotation& GfRotation::SetQuat | ( | const GfQuatd & | quat | ) |
|
inline |
Sets the rotation from a quaternion.
Definition at line 101 of file rotation.h.
GF_API GfRotation& 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.
Transforms row vector vec
by the rotation, returning the result.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
friend |
Hash.
Definition at line 222 of file rotation.h.
|
friend |
Returns composite rotation of rotations r1
and r2
.
Definition at line 260 of file rotation.h.
|
friend |
Returns a rotation equivalent to r
with its angle multiplied by scale
.
Definition at line 268 of file rotation.h.
|
friend |
Returns a rotation equivalent to r
with its angle multiplied by scale
.
Definition at line 275 of file rotation.h.
|
friend |
Returns a rotation equivalent to r
with its angle divided by scale
.
Definition at line 281 of file rotation.h.