Example #1
0
	gh::Quaternion slerp( const Quaternion& p, const Quaternion& q, float blendFactor )
	{
		Vector3 PIm( p.x, p.y, p.z );
		Vector3 QIm( q.x, q.y, q.z );
		
		Vector4 PInv = qInverse( p );

		return qMult( p, qExp( qMult( qInverse( p ), q ), blendFactor ) );
	}
void QuaternionManipulator::qtest1()
{
	HEADER("TEST 1 : Rotation of 90 degrees about the y-axis")

	Vector axis = {0.0f, 1.0f, 0.0f};
	Quaternion q = qFromAngleAxis(90.0f, axis);
	qPrint("   q", q);

	Quaternion vi = {0.0f, 7.0f, 0.0f, 0.0f};
	qPrint("  vi", vi);

	Quaternion ve = {0.0f, 0.0f, 0.0f, -7.0f};
	qPrint("  ve", ve);

	Quaternion qinv = qInverse(q);
	//qClean(qinv);
	qPrint("qinv", qinv);

	Quaternion vf = qMultiply(qMultiply(q,vi), qinv);
	qPrint("  vf", vf);

	assert(qEqual(vf, ve));
}