While working on my Gothic style windows I discovered a strictly mathematical problem. I have a skeleton bone which I need to scale in one dimension and then rotate it. The problem is rotation is performed before scale so dimension-wise scaling is not possible, the result is scalar scaling with shearing instead.

Let’s say I want to apply a scale of [sqrt(2), 1, 1] then rotate an object by 45 degrees counter-clockwise around the Y axis, what results in a quaternion vector of [-0.8733046, 0, -0.4871745, 0]. If scale was applied first the result would be correct, but this is not the case and the resulting transform is not isometric in starting Y and Z dimensions.

I’m not much into transform matrices but if I understand the basics correctly in such system it is entirely impossible to perform dimension-wise scaling (if rotation is applied there’s no way to avoid shearing). Is there any chance to change that?