美文网首页
从零开始图形学 | 线性代数的中的点乘和叉乘

从零开始图形学 | 线性代数的中的点乘和叉乘

作者: 大师的学徒 | 来源:发表于2020-11-17 22:57 被阅读0次
    图片和内容均来自GAMES101,万分感谢大神的分享! http://games-cn.org/

    线性代数在图形学中的应用:

    Dot Pruduct 点乘

    点乘可以用来计算两个单位向量的夹角,两个模为1向量的点积,获得的值即为 cosθ。如下


    点乘

    这个夹角值可以用来
    1.描述两个向量是否足够接近;
    2.解构向量(通过一个向量在另一个向量的投影分量);
    3.判断是正向还是背向;


    应用栗子:
    金属反射的Specular影响阈值,当视线在光源反射的一定范围内就可以观察到,这个范围就是反射光线和视线的夹角。

    点乘在笛卡尔坐标系下的计算方式


    Cross Pruduct 叉乘

    叉乘计算是遵循右手螺旋定则的,在OpenGL里也是右手,然而在DirectX大部分是都是左手,这也解释了为什么Substance要经常翻转法线。


    需要说明的是,叉乘返回的结果是向量,所以当向量叉乘自己时,虽然sin0 = 0, 返回的依然是0向量。
    两个向量的叉积可以用来
    1.判断向量的左右方向:正交坐标系,如果a叉乘b和 y是同向,则a在b左边
    2.判断点在面的内外:假如任{意点P和某顶点组成的向量}叉乘 {顺时针 或者 逆时针 顶点组成的各个向量},返回的结果如果显示P都在三个向量的同一侧,则P点在面内。这个可以延伸到碰撞检测或者命中算法,以及三角形光栅化的理论基础,通过判断像素是否在三角形的内部,从而得出三角形覆盖了哪些像素。


    image.png

    Matrix 矩阵

    image.png

    注:3行2列和2行3列是可以运算的, 但是3行2列和3行4列就不行了。
    某行某列矩阵运算的结果就是 {第一个矩阵的行} 点乘 {第二个矩阵的列},例如
    第一个?处在1行2列,= 1x6+3x7 = 27
    第二个?处在3行4列,= 0x4+4x3 = 12

    这里可以用矩阵的方式来描述点乘和叉乘


    另一种计算方式

    当两个矩阵相乘结果是单位矩阵(对角阵)时,就称一个矩阵为另一个矩阵的逆


    互逆矩阵

    相关文章

      网友评论

          本文标题:从零开始图形学 | 线性代数的中的点乘和叉乘

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