【WebGPU学习杂记】数学基础拾遗(3)矩阵乘法

矩阵是线性代数最重要的工具,它具有极强的几何意义可以和向量概念结合,对于处理图像、状态转移,信息统计等有非常重要的意义。这里只是简单回忆起矩阵乘法的计算方法。

矩阵

  • 有的人接触矩阵是从求解线性方程组引出 行列式 的概念;有的人是从信息统计学入手的,理解什么是 “信息”,如何对信息作摘要开始的;

  • 这里只是一个 3x3 的矩阵,注意:计算机遇到的矩阵有时可能非常大,需要额外的优化算法,矩阵分块计算之类的。不同类型的矩阵优化算法是另一个话题,例如“稀疏矩阵”处理吧啦吧啦~
    在这里插入图片描述

矩阵乘法

  • 公式定义:解释:A行B列得到AijA_{ij}Aij, 假设矩阵行列从1开始计数。
  • 给定i、p 得到每个新数位需要累加A矩阵的列数或B矩阵的行数。
    Am×n×Bn×p=Cm×pAip=∑a=1nAiaBap A_{m \times n} \times B_{n \times p} = C_{m \times p} \\ A_{ip} = \sum_{a=1}^{n} A_{ia}B_{ap} Am×n×Bn×p=Cm×pAip=a=1nAiaBap

过程

在这里插入图片描述

结果

在这里插入图片描述

几何意义

  • 还有一部分人是从向量延伸过来的,国外的课程通常从向量开始教起,这很容易建立起几何直观。而图形学中理解 3D 变换恰恰需要向量基础把矩阵的每一列看成一个维度的向量即: XYZ三维直角坐标系中的矩阵的基坐标—归一化的基向量

x⃗=(1,0,0);y⃗=(0,1,0);z⃗=(0,0,1);记住:[100010001][0]每列表示一个基向量,分量依次表达了在原初两两正交的基坐标上投影的分向量。[1]空间中的任意一点的坐标P(a,b,c)=a⋅x⃗+b⋅y⃗+c⋅z⃗向量加法得到的每一个分量,对应新的基坐标下数乘、累加后的结果。[2]若基向量的模长∣x⃗∣!=1,说明该维度上的基坐标经过了缩放[3]若基向量的模长仍为1,若它有变化则肯定是经过了旋转变化 \vec x = (1, 0, 0); \vec y = (0, 1, 0); \vec z = (0, 0, 1); \\ 记住: \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \\ [0] 每列表示一个基向量, 分量依次表达了在原初两两正交的基坐标上投影的分向量。 \\ [1] 空间中的任意一点的坐标 P(a,b,c) = a\cdot\vec{x} + b\cdot\vec{y} + c\cdot\vec{z} \\ 向量加法得到的每一个分量,对应新的基坐标下数乘、累加后的结果。\\ [2] 若基向量的模长 |\vec x| != 1, 说明该维度上的基坐标经过了缩放 \\ [3] 若基向量的模长仍为1,若它有变化则肯定是经过了旋转变化 \\ x=(1,0,0);y=(0,1,0);z=(0,0,1);记住:100010001[0]每列表示一个基向量,分量依次表达了在原初两两正交的基坐标上投影的分向量。[1]空间中的任意一点的坐标P(a,b,c)=ax+by+cz向量加法得到的每一个分量,对应新的基坐标下数乘、累加后的结果。[2]若基向量的模长x!=1,说明该维度上的基坐标经过了缩放[3]若基向量的模长仍为1,若它有变化则肯定是经过了旋转变化

WebGPU中是“列主序”

JS如何传递数据给WebGPU

  • JS

[col0⋅xcol0⋅ycol0⋅zcol1⋅xcol1⋅ycol1⋅zcol2⋅xcol2⋅ycol2⋅z]\begin{bmatrix} col0\cdot x & col0\cdot y & col0\cdot z \\ col1\cdot x & col1\cdot y & col1\cdot z \\ col2\cdot x & col2\cdot y & col2\cdot z \end{bmatrix}col0xcol1xcol2xcol0ycol1ycol2ycol0zcol1zcol2z

// JS 端一维数组(传给 mat3x3f 的例子)
const mat = new Float32Array([
  a0, a1, a2, // 第一列 (column 0)
  b0, b1, b2, // 第二列 (column 1)
  c0, c1, c2  // 第三列 (column 2)
]);
  • WGSL
mat3x3f(
  vec3f(a0, a1, a2),  // column 0
  vec3f(b0, b1, b2),  // column 1
  vec3f(c0, c1, c2)   // column 2
)
  • WGSL读取JS传入的数据表达形式的 **“视觉效果”**是 矩阵转置 后的。
  • 设定固定步长的字节数,逐步读取写到matrix的每一列。
| a0  b0  c0 |
| a1  b1  c1 |
| a2  b2  c2 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值