Esempio n. 1
0
        public static Matrix43 ScaleMatrix(float x, float y, float z)
        {
            Matrix43 m = new Matrix43();
            float *  p = (float *)&m;

            p[0]  = x;
            p[5]  = y;
            p[10] = z;
            return(m);
        }
Esempio n. 2
0
        public static Matrix43 TranslationMatrix(float x, float y, float z)
        {
            Matrix43 m = new Matrix43();
            float *  p = (float *)&m;

            p[3]  = x;
            p[7]  = y;
            p[11] = z;
            p[0]  = p[5] = p[10] = 1.0f;
            return(m);
        }
Esempio n. 3
0
        public Matrix43 GetTranslation()
        {
            Matrix43 m = Identity;
            float *  p = (float *)&m;

            fixed(float *s = _data)
            {
                p[3]  = s[3];
                p[7]  = s[7];
                p[11] = s[11];
            }

            return(m);
        }
Esempio n. 4
0
        public static Matrix43 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);

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

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

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

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

            Matrix43 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);
        }
Esempio n. 5
0
        public static Matrix43 RotationMatrixRX(float x)
        {
            Matrix43 m = new Matrix43();
            float *  p = (float *)&m;

            float cosx = (float)Math.Cos(x / 180.0f * Math.PI);
            float sinx = (float)Math.Sin(x / 180.0f * Math.PI);

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

            return(m);
        }
Esempio n. 6
0
        public static Matrix43 RotationMatrixRY(float y)
        {
            Matrix43 m = new Matrix43();
            float *  p = (float *)&m;

            float cosy = (float)Math.Cos(y / 180.0f * Math.PI);
            float siny = (float)Math.Sin(y / 180.0f * Math.PI);

            p[5] = 1.0f;

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

            return(m);
        }
Esempio n. 7
0
        internal void Scale(float x, float y, float z)
        {
            Matrix43 m = ScaleMatrix(x, y, z);

            this.Multiply(&m);
        }
Esempio n. 8
0
        internal void Rotate(float x, float y, float z)
        {
            Matrix43 m = RotationMatrix(x, y, z);

            this.Multiply(&m);
        }
Esempio n. 9
0
        public void Translate(float x, float y, float z)
        {
            Matrix43 m = TranslationMatrix(x, y, z);

            Multiply(&m);
        }