Back to class index
Quat[Class Summary]
x
y
z
w
identity[static][const]
nan[static][const]
ctor (+7 overloads)
WorldX()[const]
WorldY()[const]
WorldZ()[const]
Axis()[const]
Angle()[const]
Dot(rhs)[const]
LengthSq()[const]
Length()[const]
Normalize()
Normalized()[const]
IsNormalized(epsilon)[const]
IsInvertible(epsilon)[const]
IsFinite()[const]
Equals(rhs,epsilon)[const]
BitEquals(other)[const]
ptr() (+1 overload)
Inverse()
Inverted()[const]
InverseAndNormalize()
Conjugate()
Conjugated()[const]
Transform(x,y,z)[const] (+2 overloads)
Lerp(target,t)[const]
Slerp(target,t)[const]
AngleBetween(target)[const]
AxisFromTo(target)[const]
ToAxisAngle(...)[const] (+1 overload)
SetFromAxisAngle(...) (+1 overload)
Set(matrix) (+3 overloads)
ToEulerXYX()[const]
ToFloat3x3()[const]
ToFloat3x4()[const]
ToFloat4x4()[const] (+2 overloads)
ToString()[const]
ToString2()[const]
SerializeToString()[const]
SerializeToCodeString()[const]
operator*(rhs)[const] (+2 overloads)
operator/(rhs)[const]
operator+()[const]
Mul(rhs)[const] (+3 overloads)
Neg()[const]
Lerp(source,target,t)[static]
Slerp(source,target,t)[static]
SlerpVector(from,to,t)[static]
SlerpVectorAbs(...)[static]
LookAt(...)[static]
RotateX(angleRadians)[static]
RotateY(angleRadians)[static]
RotateZ(angleRadians)[static]
RotateAxisAngle(...)[static]
RotateFromTo(...)[static] (+2 overloads)
FromEuler***(x2,y,x)[static]
RandomRotation(lcg)[static]
FromString(str,outEndStr)[static] (+1 overload)

Quat::RotateFromTo

Syntax

MUST_USE_RESULT Quat Quat::RotateFromTo(const float3 &sourceDirection, const float3 &targetDirection); [18 lines of code]
MUST_USE_RESULT Quat Quat::RotateFromTo(const float4 &sourceDirection, const float4 &targetDirection); [27 lines of code]

Creates a new quaternion that rotates sourceDirection vector (in world space) to coincide with the targetDirection vector (in world space).

Rotation is performed around the origin. The vectors sourceDirection and targetDirection are assumed to be normalized.

Note
There are multiple such rotations - this function returns the rotation that has the shortest angle (when decomposed to axis-angle notation).

Syntax

MUST_USE_RESULT Quat Quat::RotateFromTo(const float3 &sourceDirection, const float3 &targetDirection, const float3 &sourceDirection2, const float3 &targetDirection2); [5 lines of code]

Creates a new quaternion that.

  • rotates sourceDirection vector to coincide with the targetDirection vector, and then

  • rotates sourceDirection2 (which was transformed by 1.) to targetDirection2, but keeping the constraint that sourceDirection must look at targetDirection.