Esempio n. 1
0
        mat4 dualQuatToMatrix(vec4 Qn, vec4 Qd)
        {
            float len2 = Qn.dot(Qn);
            float w = Qn.w, x = Qn.x, y = Qn.y, z = Qn.z;
            float t0 = Qd.w, t1 = Qd.x, t2 = Qd.y, t3 = Qd.z;
            vec4  col0 = new vec4(w * w + x * x - y * y - z * z,
                                  2 * x * y + 2 * w * z,
                                  2 * x * z - 2 * w * y,
                                  0) / len2;
            vec4 col1 = new vec4(2 * x * y - 2 * w * z,
                                 w * w + y * y - x * x - z * z,
                                 2 * y * z + 2 * w * x,
                                 0) / len2;
            vec4 col2 = new vec4(2 * x * z + 2 * w * y,
                                 2 * y * z - 2 * w * x,
                                 w * w + z * z - x * x - y * y,
                                 0) / len2;
            vec4 col3 = new vec4(-2 * t0 * x + 2 * w * t1 - 2 * t2 * z + 2 * y * t3,
                                 -2 * t0 * y + 2 * t1 * z - 2 * x * t3 + 2 * w * t2,
                                 -2 * t0 * z + 2 * x * t2 + 2 * w * t3 - 2 * t1 * y,
                                 len2) / len2;
            mat4 m = new mat4(col0, col1, col2, col3);

            return(m);
        }
 public static float dot(vec4 v1, vec4 v2)
 {
     return(v1.dot(v2));
 }