# [Answered] Matrix create from XYZ rotation: scale problem

This topic is 1930 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hi

I've been coding my own math library and I got a bug when I create a Matrix from a rotation across the X, Y and Z axises. The bug is that it also scales my vectors. I know it might be hard to understand my code, but you are my only hope left (I checked and checked again my code a lot of times) so here's my code:

[CODE]
static Matrix4x4<T> CreateFromRotationXYZ_S(const T &radiansX, const T &radiansY, const T &radiansZ)
{
Matrix4x4<T> result;
result.m14 = 0;
result.m24 = 0;
result.m34 = 0;
result.m41 = 0;
result.m42 = 0;
result.m43 = 0;
result.m44 = 1;
return result;
}
[/CODE]

Thank you [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

##### Share on other sites
Ouch. You better create a simple rotation matrix for each axis and multiply(compose) all three to obtain the final rotation matrix.

##### Share on other sites
Mistakes are at least in the formulas of m21 and m22 (both showing 3 summands), because their format has to be the same as those of m31 and m32 (both showing 2 summands).

As a hint: The length of each column vector and each row vector in a pure rotation matrix is 1. If the length differs from 1 then scaling will occur. Edited by haegarr