TEST(QuaternionTest, Extraction)
{
	Vec4f p(0,5,5,1);
	Quaternion q1(0, 45, 0);
	Quaternion q2(0, 0, 45);

	Vec4f p1 = p.Rotate(q1);
	p1 = p1.Rotate(q2);

	Quaternion q = q2*q1;

	float angle;
	Vec4f axis;
	q.ExtractRotationAxisAndAngle(&angle, &axis);

	Quaternion net(angle, axis);
	Vec4f p2 = p.Rotate(net);

	EXPECT_EQ(p1, p2);
}