m = Matrix::rotation(-trn.euler.y, Vector3(0.0f, 1.0f, 0.0f))*m;
trn.euler.x = Geometry::atan2<float>(m(2, 1), m(1, 1));
m = Matrix::rotation(-trn.euler.x, Vector3(1.0f, 0.0f, 0.0f))*m;
trn.scale = Vector3(m(0, 0), m(1, 1), m(2, 2));
m = Matrix::rotation(-trn.euler.y, Vector3(0.0f, 1.0f, 0.0f))*m;
trn.euler.x = Geometry::atan2<float>(m(2, 1), m(1, 1));
m = Matrix::rotation(-trn.euler.x, Vector3(1.0f, 0.0f, 0.0f))*m;
trn.scale = Vector3(m(0, 0), m(1, 1), m(2, 2));