/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* Default Constructor
*/
Quaternion::Quaternion()
- : mVector( 0.0f, 0.0f, 0.0f, 1.0f )
+: mVector( 0.0f, 0.0f, 0.0f, 1.0f )
{
}
-Quaternion::Quaternion( float cosThetaBy2, float iBySineTheta, float jBySineTheta, float kBySineTheta ) :
- mVector( iBySineTheta, jBySineTheta, kBySineTheta, cosThetaBy2 )
+Quaternion::Quaternion( float cosThetaBy2, float iBySineTheta, float jBySineTheta, float kBySineTheta )
+: mVector( iBySineTheta, jBySineTheta, kBySineTheta, cosThetaBy2 )
{
}
Quaternion::Quaternion( const Vector4& vector )
+: mVector( vector )
{
- mVector = vector;
}
Quaternion::Quaternion( Radian angle, const Vector3& axis )
float Quaternion::Length() const
{
- return (float)sqrt(mVector.w * mVector.w + mVector.Dot(mVector));
+ return static_cast< float >( sqrt(mVector.w * mVector.w + mVector.Dot(mVector) ) );
}
float Quaternion::LengthSquared() const
{
- return (float)(mVector.w * mVector.w + mVector.Dot(mVector));
+ return static_cast< float >( mVector.w * mVector.w + mVector.Dot(mVector) );
}
void Quaternion::Normalize()
//Formula for angle θ between two quaternion is:
//θ = cos^−1 (2⟨q1,q2⟩^2 − 1), Where (q1,q2) is inner product of the quaternions.
float X = from.mVector.Dot4(to.mVector);
- float theta = acos( (2 * X * X) - 1);
+ float theta = acosf( (2 * X * X) - 1); // float arc cosine
return theta;
}
Radian angleRadians;
quaternion.ToAxisAngle( axis, angleRadians );
- Degree degrees = Radian( angleRadians );
+ Degree degrees( angleRadians );
return o << "[ Axis: [" << axis.x << ", " << axis.y << ", " << axis.z << "], Angle: " << degrees.degree << " degrees ]";
}
} // namespace Dali
-