当前位置: 首页 > article >正文

DirectX12(D3D12)基础教程三 线性代数

线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。 向量和矩阵是学习3D入门最基本的理论基础。本章重点讲向量和矩阵. 

向量概念

向量最基本的定义就是一个方向长度,如图坐标点(3,4)

根据 勾股定理  \sqrt{x^{2}+y^{2}} 可以计算出它长度是5=\sqrt{3^{2}+4^{2}}也叫做向量的模 方向是与X轴的夹角θ,向量的长度和方向根据坐标可以计算出,通常书写标记为:\binom{3}{4} 通常大家喜欢在字母上面加一横表示向量,如: \bar{V}=\binom{3}{4}

单位向量

有一个特殊类型向量的模(长度)等于1叫做单位向量,把一个向量变成单位向量这叫标准化。任意向量的每个分量除以向量的模就得到它的单位向量。特别是在我们只关心方向不关心模(长度)的时候。比如 \bar{V}=\binom{3}{4}要标准化,先计算模\left | \right |\bar{v}\left | \right | = \sqrt{3^{2}+4^{2}} = 5,然后除以向量的模 ,\binom{3}{4}的单位向量\hat{n} = \frac{\bar{v=}\binom{3}{4}}{5} = \binom{3/5}{4/5}=\binom{0.6}{0.8}。现在我们再计算向量\binom{0.6}{0.8}的模 \left \| \bar{v} \right \| =\sqrt{0.6^{2}+0.8^{2}}=\sqrt{0.36+0.64}=\sqrt{1}=1,再次证实了。

向量运算

向量与标量加减乘除

\binom{X}{Y} [+-*/] Z = \binom{X[+-*/]Z}{Y[+-*/]Z} ,比如加法运算 :\binom{3}{4} + 10 = \binom{3+10}{4+10} = \binom{13}{14}

向量与向量的加减

\binom{X}{Y}[+-]\binom{X2}{Y2} = \binom{X[+-]X2}{Y[+-]Y2}   比如加法运算 :\binom{1}{2}+\binom{3}{4}=\binom{1+3}{2+4} = \binom{4}{6}

以上都比较好理解,不做过多的说明了

向量相乘

普通的乘法在向量上是没有定义的,在3D世界里 ,两种特定情况:1.点乘(Dot Product)记作\bar{v} \cdot \bar{k}2.叉乘(Cross Product)记作\bar{v}\times \bar{k}

1.点乘(Dot Product) ,两个向量的点乘结果等两个向量之间夹角的余弦值,可以算出向量之间夹角的角度,提前是先要标准化。点乘会在计算光照的时候非常有用。比如计算\binom{3}{4}向量与X轴\binom{0}{1}的夹角\Theta,点乘会像是这样\cos\Theta =\binom{0.6}{0.8}\cdot \binom{0}{1} = 0.6*0+0.8*1=0.8

2.叉乘(Cross Product) 叉乘只在3D空间中有定义,它需要两个不平行向量作为输入,生成一个正交于两个输入向量的第三个向量。公式如下:

如看不懂,先放下。

矩阵

现在我们已经讨论了向量的全部内容,是时候看看矩阵了!简单来说矩阵就是一个矩形的数字、符号或表达式数组。矩阵中每一项叫做矩阵的元素(Element)。下面是一个2×3矩阵的例子:\begin{bmatrix} 1 &2 &3 \\ 4& 5& 6 \end{bmatrix} 可以把它看做一个两维数据。

矩阵运算

矩阵与与标量加减乘除比较好理解,比较如加法 \begin{bmatrix} 1 & 2 & 3\\ 4 &5 & 6 \end{bmatrix} + 10 =\begin{bmatrix} 10+1 & 10+2 & 10+3\\ 10+4 &10+5 &10+ 6 \end{bmatrix} = \begin{bmatrix} 11 & 12 & 13\\ 14 &15 & 16 \end{bmatrix}

矩阵相乘

注意事项

1. 只有当左侧矩阵的列数与右侧矩阵的行数相等,两个矩阵才能相乘。
2. 矩阵相乘不遵守交换律也就是说A⋅B≠B⋅A

我们先看一个两个2×2矩阵相乘的例子

\begin{bmatrix} 1 &2 \\ 3& 4 \end{bmatrix} \times \begin{bmatrix} 5 &6 \\ 7& 8 \end{bmatrix} = \begin{bmatrix} 1*5+2*7 &1*6+2*8 \\ 3*5+4*7& 3*6 +4*8\end{bmatrix} =\begin{bmatrix} 19 &22 \\ 43& 50 \end{bmatrix}

未完成 先占位。。。。


http://www.kler.cn/a/556887.html

相关文章:

  • A103基于SpringBoot实现的停车场管理系统
  • go 反射 interface{} 判断类型 获取值 设置值 指针才可以设置值
  • 推理步骤长度对大型语言模型的影响
  • 鸿蒙NEXT应用App测试-专项测试(DevEco Testing)
  • Apache Logic4j 库反序列化漏洞复现与深度剖析
  • goland 和 java 的区别
  • 力扣27. 移除元素(快慢指针)
  • ✨ 索引有哪些缺点以及具体有哪些索引类型
  • 数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)
  • TensorFlow v2.16 Overview
  • 【Ubuntu】GPU显存被占用,但显示没有使用GPU的进程
  • HTTP 常见状态码技术解析(应用层)
  • 第P10周-Pytorch实现车牌号识别
  • Node.js中不支持require和import两种导入模块的混用
  • python-leetcode-反转链表
  • 游戏引擎学习第115天
  • 力扣-二叉树-669 修剪二叉搜索树
  • 高频网络分析仪中的sdd是什么参数
  • STL介绍1:vector、pair、string、queue、map
  • Ubuntu 的RabbitMQ安装