Example #1
0
        public static Matrix34 RotationMatrix(float x, float y, float z)
        {
            float cosx = (float)Math.Cos(x / 180.0f * Math.PI);
            float sinx = (float)Math.Sin(x / 180.0f * Math.PI);
            float cosy = (float)Math.Cos(y / 180.0f * Math.PI);
            float siny = (float)Math.Sin(y / 180.0f * Math.PI);
            float cosz = (float)Math.Cos(z / 180.0f * Math.PI);
            float sinz = (float)Math.Sin(z / 180.0f * Math.PI);

            Matrix34 m = Identity;
            float *  p = (float *)&m;

            p[5]  = cosx;
            p[6]  = -sinx;
            p[9]  = sinx;
            p[10] = cosx;

            Matrix34 m2 = Identity;
            float *  p2 = (float *)&m2;

            p2[0]  = cosy;
            p2[2]  = siny;
            p2[8]  = -siny;
            p2[10] = cosy;

            Matrix34 m3 = Identity;
            float *  p3 = (float *)&m3;

            p3[0] = cosz;
            p3[1] = -sinz;
            p3[4] = sinz;
            p3[5] = cosz;

            m.Multiply(&m2);
            m.Multiply(&m3);

            //p[0] = cosy * cosz;
            //p[1] = cosy * sinz;
            //p[2] = -siny;
            //p[4] = (sinx * siny * cosz - cosx * sinz);
            //p[5] = (sinx * siny * sinz + cosx * cosz);
            //p[6] = sinx * cosy;
            //p[8] = (cosx * siny * cosz + sinx * sinz);
            //p[9] = (cosx * siny * sinz - sinx * cosz);
            //p[10] = cosx * cosy;

            return(m);
        }