Not strange at all.
p' = qp(q*) OR
p' = (q*)pq depending on your definition of quaternion multiplication. I've seen two different forms, and the result is that quaternion concatenation takes place in opposite order.
Firstly, if multiplication is defined as
Code:
result.w = w*a.w - x*a.x - y*a.y - z*a.z;
result.x = w*a.x + x*a.w + z*a.y - y*a.z;
result.y = w*a.y + y*a.w + x*a.z - z*a.x;
result.z = w*a.z + z*a.w + y*a.x - x*a.y;
Then p' = (q*)pq
Else, if it's defined as
Code:
result.w = a.w*w - a.x*x - a.y*y - a.z*z;
result.x = a.w*x + a.x*w + a.y*z - a.z*y;
result.y = a.w*y - a.x*z + a.y*w + a.z*x;
result.z = a.w*z + a.x*y - a.y*x + a.z*w;
Then p' = qp(q*)