public static Matrix3 Rotate3Y(float theta)
{
theta = theta * (float)Math.PI / 180.0f;
var sn = (float)Math.Sin(theta);
var cn = (float)Math.Cos(theta);
var result = new Matrix3();
result.M[0, 0] = cn;
result.M[0, 2] = sn;
result.M[2, 0] = -sn;
result.M[2, 2] = cn;
return result;
}