美文网首页
六、OpenGL之3D图形学基础理论

六、OpenGL之3D图形学基础理论

作者: 随意昵称你能懂得 | 来源:发表于2020-07-17 09:32 被阅读0次

    向量相关

    向量

    定义:既有大小,又有方向的一个几何对象。
    单位向量:不论方向,大小为1的向量
    向量大小(长度/模)的计算公式


    向量的模的计算

    非单位向量(x, y, z)转化为单位向量


    2251862-21ee5fab7252ed0e.png
    在 math3d 库中提供关于向量的类型typedef float M3DVector3f[3]; typedef float M3DVector4f[4];

    //三维向量
    typedef float M3DVector3f[3];
    //四维向量
    typedef float M3DVector4f[4];

    向量点乘

    2个(三维向量)单元向量之间进行点乘运算将得到一个标量,它表示两个向量之间的夹角(余弦值cos)。
    在 math3d 库中提供关于点乘的API

    //1.m3dDotProduct3 函数获得2个向量量之间的点乘结果
    float m3dDotProduct3(const M3DVector3f u,const M3DVector3f v);
    //2.m3dGetAngleBetweenVector3 即可获取2个向量量之间夹⻆角的弧度值
    float m3dGetAngleBetweenVector3(const M3DVector3f u,const
    M3DVector3f v);

    向量叉乘

    2个向量量 之间叉乘就可以得到另外⼀一个向量量,新的向量量会与原来2个向量量定义的平⾯面垂直。
    两个向量的顺序不能随意调换,不然角度会相反。
    在 math3d 库中提供关于点乘的API

    //1.m3dCrossProduct3 函数获得2个向量量之间的叉乘结果得到⼀一个新的向量量
    void m3dCrossProduct3(M3DVector3f result,const M3DVector3f u ,const
    M3DVector3f v)

    矩阵相关

    矩阵

    矩阵分类:

    1. 行优先矩阵:一行一行读取
    2. 列优先矩阵:一列一列读取。OpenGL使用约定。

    两者的关系为:行优先矩阵经过转置,即可的到列优先矩阵

    在 math3d 库中提供关于矩阵的API

    //三维矩阵
    typedef float M3DMatrix33f[9];
    //四维矩阵
    typedef float M3DMatrix44f[16];

    单位矩阵

    主对角线上数据都是1,其余元素都是0,即为单元矩阵。
    向量 X 单元矩阵 = 向量 X 1,不会发生任何变化。
    向量与单元矩阵相乘的前提是:

    向量的列数 == 单元矩阵的行数。
    如4x44x1可以获得4x1向量
    若4x14x4虽然不会报错,但是无意义,不符合矩阵规定

    在 math3d 库中提供关于单元矩阵的API

    //单元矩阵的初始化方式
    void m3dLoadIdentity44f(M3DMatrix44f m);

    OpenGL矩阵变换

    在线性代数维度的坐标计算,一般是从左往右计算,且使用行优先矩阵

    变换后顶点向量量 = V_local * M_model * M_view * M_pro
    变换后顶点向量量 = 顶点(1x4) * 模型矩阵(4x4) * 观察矩阵(4x4) * 投影矩阵(4x4)

    在OpenGL维度的坐标计算,一般是从右往左计算,且使用行优先矩阵

    变换顶点向量量 = M_pro * M_view * M_model * V_local
    变换顶点向量量 = 投影矩阵(4x4) * 视图变换矩阵(4x4) * 模型矩阵(4x4) * 顶点(4x1)

    OpenGL矩阵变换

    OpenGL中代码如下


    代码段

    矩阵左乘

    1. 从栈顶获取栈顶矩阵 复制到 mTemp
    2. 将栈顶矩阵 mTemp 左乘 mMatrix
    3. 将结果放回栈顶空间⾥
    矩阵左乘

    相关文章

      网友评论

          本文标题:六、OpenGL之3D图形学基础理论

          本文链接:https://www.haomeiwen.com/subject/dvuwhktx.html