OpenGL笔记九:3D数学小记

作者: 御雪飞斐 | 来源:发表于2019-06-02 17:54 被阅读28次

    前言

    期待您移步上篇:OpenGL笔记八:2D纹理坐标解析

    向量大小计算:

    ||V|| : 为向量V的模。


    向量大小计算公式.png

    向量与标量的除法:

    向量与标量的除法.png

    标准化向量:

    标准化向量.png

    示例:


    示例-1.png

    零向量是不能被标准的,数学是上不允许的。因为将导致除数为0,几何上没有意义。因为零向量没有方向。

    向量点乘

    向量点乘.png

    点乘的几何意义

    a • b = ||a|| ||b|| cos(q) 
    //q为a,b向量的夹角
    
    • 3D中,两向量的夹⻆角是在包含两向量的平⾯中定义的。


      点乘夹角q.png
    • ⽤点乘计算2个向量之间的夹⻆角q,如果a,b都是单位向量
    q = arccos ( a • b )
    
    a·b q角度 a 和 b
    >0 0° ≤ q < 90° 方向基本相同
    =0 q = 90° 正交
    <0 90° < q ≤ 180° 方向基本相反

    示例:


    示例-1.png
    示例-2.png

    向量叉乘

    向量叉乘.png

    向量的叉乘⼏何意义

    • 向量a,b在⼀个平⾯中。向量a * b 指向该平⾯的正上⽅,垂直于a 和b a * b 的⻓长度等于向量的⼤⼩与向量夹⻆角的sin值的积,如下:
    || a * b || = ||a|| ||b|| sin∂
    

    矩阵基础

    标量与矩阵相乘

    标量与矩阵相乘.png

    矩阵与矩阵相乘

    Arn * Bnm = Crm
    即:r行n列矩阵A 叉乘 n行m列矩阵B = r行m列矩阵C

    • 矩阵相乘法则:对结果中的任意元素Cij,取A的第i⾏和第j列,将⾏和列中的对应元素相乘。然后将结果相加等于A的i行和B的j列的点积)。Cij就等于这个和。
      矩阵相乘.png
      示例.png

    矩阵乘法注意事项:

    • 1.任意矩阵M乘以⽅阵S,不管从哪边乘,都得到与原矩阵⼤⼩相同的矩阵。当然,前提是假定乘法有意义。如果S是单位 矩阵,结果就是原矩阵M,即:MI = IM = M 。
    • 2.矩阵乘法不满⾜交换律,即:AB != BA
    • 3.矩阵乘法满⾜结合律,即:(AB)C = A(BC)。假定ABC的维数使得其乘法有意义,要注意如果(AB)C有意义,那么A(BC)就 ⼀定有意义。
    • 4.矩阵乘法也满⾜与标量或向量的结合律,即:(kA)B = k(AB) = A(kB); (vA)B = v(AB);
    • 5.矩阵积的转置相当于先转置矩阵然后以相反的顺序乘法,即:(AB)T = BT AT

    矩阵与向量相乘 注意事项:

    • 1.结果向量中的每个元素都是原向量与矩阵中单独⾏或列的点积;
    • 2.矩阵⼀向量乘法满⾜对向量加法的分配律,对于向量v,w 和 矩阵M 有,
      (v + w)M = vM + wM;

    矩阵⼏何意义

    1.⽅阵的⾏能被解释为坐标系的基向量;
    2.为了将向量从原坐标系变换到新坐标系,⽤它乘以⼀个矩阵。
    3.从原坐标系到这些基向量定义的新坐标系的变化是⼀种线性变换。线性变换保持直线和平⾏线。但角度、长度、 ⾯积或体积可能会改变。
    4.零向量乘以任何矩阵仍然得到零向量。因此,⽅阵所代表的线性变换的原点和原坐标系原点⼀致。变换不包含 原点。

    3D旋转 围绕任意轴旋转向量

    绕n轴旋转⻆角度∂之后的矩阵:


    任意轴旋转公式.png

    期待您移步下篇:OpenGL笔记十:OpenGL ES初探

    相关文章

      网友评论

        本文标题:OpenGL笔记九:3D数学小记

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