Exemplo n.º 1
0
        /// <summary>
        /// 乗算を行う。
        /// </summary>
        /// <param name="o">出力先</param>
        /// <param name="in1">行列1</param>
        /// <param name="in2">行列2</param>
        public static void Mul(ref Matrix44 o, ref Matrix44 in1, ref Matrix44 in2)
        {
            Matrix44 _in1 = in1;
            Matrix44 _in2 = in2;

            fixed (float* vo = o.Values)
            {
                fixed (float* v1 = in1.Values)
                {
                    fixed (float* v2 = in2.Values)
                    {
                        for (int i = 0; i < 4; i++)
                        {
                            for (int j = 0; j < 4; j++)
                            {
                                float v = 0.0f;
                                for (int k = 0; k < 4; k++)
                                {
                                    v += v1[i * 4 + k] * v2[k * 4 + j];
                                }
                                vo[i * 4 + j] = v;
                            }
                        }
                    }
                }
            }
        }