官术网_书友最值得收藏!

Transpose

To transpose a matrix, flip every element of the matrix across its main diagonal. For example, the 2, 1 element would become the 1, 2 element. Elements where both subscripts are the same, such as 1, 1, will remain the same:

  1. Implement the transpose function in mat4.cpp. Don't forget to add the function declaration to mat4.h:

    #define M4SWAP(x, y) \

        {float t = x; x = y; y = t; }

    void transpose(mat4 &m) {

        M4SWAP(m.yx, m.xy);

        M4SWAP(m.zx, m.xz);

        M4SWAP(m.tx, m.xw);

        M4SWAP(m.zy, m.yz);

        M4SWAP(m.ty, m.yw);

        M4SWAP(m.tz, m.zw);

    }

  2. Create a transposed function in mat4.cpp. The transposed function modifies a matrix that is passed into it. Don't forget to add the function declaration to mat4.h:

    mat4 transposed(const mat4 &m) {

        return mat4(

            m.xx, m.yx, m.zx, m.tx,

            m.xy, m.yy, m.zy, m.ty,

            m.xz, m.yz, m.zz, m.tz,

            m.xw, m.yw, m.zw, m.tw

        );

    }

Transposing a matrix is useful if you need to convert a matrix from row-major to column-major or the other way around. In the next section, you will learn how to calculate the determinant of a square matrix.

主站蜘蛛池模板: 万源市| 怀化市| 玉龙| 峡江县| 安顺市| 新河县| 永德县| 汉阴县| 西宁市| 青冈县| 观塘区| 凤山县| 怀远县| 介休市| 苗栗县| 岱山县| 大关县| 胶州市| 崇礼县| 雅安市| 梨树县| 古丈县| 额尔古纳市| 新巴尔虎右旗| 张家川| 泰顺县| 镇康县| 彭水| 汝南县| 扎兰屯市| 广昌县| 灵武市| 上饶县| 富宁县| 孟连| 博野县| 伊金霍洛旗| 专栏| 丹江口市| 安乡县| 元阳县|