【Unity】线性代数根本:矩阵、矩阵乘法、转置矩阵、逆矩阵、正交矩阵等
不知不觉中,这套【Unity学习条记】写了100篇了,访问次数高出了37万,粉丝也渐渐开始涨上来了,每次看到各人的鼓励都很开心,这一起走来固然时间不长,但也挺值得回味的,在这小感慨一下。这个过程中平台和朋侪都劝我做知识付费我都没思量。一方面不渴望让这统统的驱动力由爱好转为优点;另一方面也不渴望给本身太大的压力,毕竟志不在此。本年黑猴发布了,看情况应该卖的还不错,算是给国内游戏行业长脸了,渴望他们能真真正正的赚一笔,为下一款游戏奠定根本,向导国产游戏向着更有内容更有深度的方向发展,也能扭转一下国内蛋仔、二次元、648横行的尴尬局面。在这里表明一下,没有对某些游戏公司不敬的意思,我只是单方面的以为这些骗小孩子时间骗年轻人钱的游戏 【都!是!垃!圾!】。没内容,没深度,没有社会责任感,“小弟子不玩蛋仔就是不合群!”,“这个皮肤面数这么多,卖1888真的很本心了!”。一不警惕感情出来了,不讲这些负面的东西了,有这个时间还不如多写点东西推动国内游戏行业康健发展和迭代呢。
我应该会继续写下去,200篇、300篇,下一个专栏。渴望反面的专栏都能是咱们本身国产的,好比Cocos,渴望咱们国产引擎能越做越好,最好是百花齐放,推动显卡行业国产化进程,做出咱们本身的DirectX、OpenGL、Vulkan,让全天下的显卡都兼容中国的图形API。否则反面AI芯片还是会被人卡脖子。不做付费也有很大一部门缘故起因是不渴望国内游戏开发者的学习门路受到拦阻(最少在我这不会被拦阻),每次有批评和私信我都尽我的本事去帮助,只渴望我这一点点光能让国产游戏行业的天更加光辉辉煌光耀!
书归正传,这一篇很紧张,由于它的名字叫做----矩阵!
这!很!重!要! 这!很!重!要! 这!很!重!要!
矩阵的感性意义在于它为我们提供了一种简便、直观、有力的数学工具来形貌和明白现实天下的复杂征象和厘革规律。无论是构造数值、形貌变更、简化盘算还是数学建模和感性认知等方面,矩阵都发挥着不可更换的紧张作用。而在游戏开发行业中,矩阵是你从小白到大神 无法绕过的必修课 之一!
矩阵(Matrix)
矩阵,英文名是Matrix。在数学中,矩阵是一个矩形阵列,此中的元素可以是数字、符号或数学表达式等。矩阵的维度由其行数和列数确定。一个m×n的矩阵是一个由m行n列的元素构成的矩形阵列。
[ M 1 , 1 M 1 , 2 M 1 , 3 M 2 , 1 M 2 , 2 M 2 , 3 M 3 , 1 M 3 , 2 M 3 , 3 ] \left[ \begin{matrix} M_{1,1} & M_{1,2} & M_{1,3} \\ M_{2,1} & M_{2,2} & M_{2,3} \\ M_{3,1} & M_{3,2} & M_{3,3} \end{matrix} \right] M1,1M2,1M3,1M1,2M2,2M3,2M1,3M2,3M3,3
矩阵是线性代数的根本内容之一,在办理线性方程组时,可以将系数和常数写成一个矩阵,然后使用矩阵运算来求解方程组。在图形变更(如旋转、缩放、平移)中,也经常使用矩阵来表现这些变更。
矩阵包罗多种运算,如加法、减法、处罚、转置、逆运算等。
矩阵夺目啥?
简单的说,矩阵一方面可以用来存储一个物体的位置、旋转、缩放信息;另一方面也可以通过矩阵的运算实现物体的平移、旋转、缩放;通过矩阵的应用,还能实现让一个模子上的每一个点一步步的通过矩阵运算终极酿成屏幕上的一个点的坐标等。可以说假如要搞懂3D数学、Shader这类知识,矩阵是必不可少的。
在Unity中,矩阵(Matrix)扮演着至关紧张的脚色,特殊是在处置处罚物体的位置、旋转和缩放等变更时。以下是矩阵在Unity中的重要作用:
[*]形貌变更:矩阵重要用于形貌物体的变更,包罗位置、旋转和缩放。Unity内部使用齐次矩阵(通常是4x4矩阵)来存储这些信息。比方,一个物体的Transform组件就包罗了其位置、旋转和缩放信息,这些信息现实上是通过矩阵来存储和处置处罚的。
[*]构建变更矩阵:在Unity中,可以通过 Matrix4x4 的静态方法来构建变更矩阵。比方,使用 Matrix4x4.Translate 来构建平移矩阵,Matrix4x4.Rotate 来构建旋转矩阵,以及 Matrix4x4.Scale 来构建缩放矩阵。
[*]应用变更矩阵:一旦构建了变更矩阵,就可以将其应用到物体上,以实现物体的位置、旋转或缩放等变更。这些变更可以直接在物体的Transform组件中举行设置,也可以通过直接操纵矩阵来实现。
[*]合成变更:在3D图形中,一个物体大概必要举行多个变更(如先旋转再平移)。在Unity中,可以通过矩阵乘法来合成这些变更。通常,变更的序次是先缩放,然后旋转,末了平移。
[*]变更点和向量:在Unity中,还可以使用矩阵来变更点和向量。比方,可以使用一个物体的localToWorldMatrix来将一个局部坐标转换到天下坐标。
[*]投影矩阵:在Unity中,投影矩阵通常用于将三维物体投影到二维屏幕上。Unity提供了多种投影方式,如正交投影和透视投影,这些方式都可以通过设置Camera组件的Projection属性来实现。
[*]自界说矩阵:除了Unity内置的Matrix4x4结构,还可以使用自界说的矩阵类或结构。自界说的矩阵类或结构可以包罗更多的方法和属性,以便更好地满意特定的需求。
固然,假如没有线性代数根本的话看到这些大概会比力懵,毕竟连变更是干嘛的都不知道呢。假如想进一步相识变更,可以到文末的目次中去找对应的章节,我将会把这两篇文章都放在一起。
矩阵根本运算
下面是一些根本的矩阵算法,大概会有些枯燥,发起先看懂,然后收藏,等必要的时间过来查询。等反面用多了天然就风俗了,而且很多时间这些运算是不必要人脑来盘算的,我们只必要知道这些运算能起到什么作用即可。
矩阵加减法
多少意义:矩阵加减就是对矩阵列空间下的基向量做变更。在图形和图像处置处罚中,矩阵经常用来表现像素值的数组。在这种情况下,矩阵的加法可以用来混淆或叠加两个图像(比方,在图像叠加或透明度混淆中)。矩阵的减法可以用来检测图像之间的差别或举行配景消除等操纵。
先决条件:只有同型的矩阵(两个矩阵的行数和列数雷同)才可以做加减法运算。
满意定律:矩阵加减满意互换律和联合律。
盘算方法:矩阵加法一样平常是指两个矩阵把其相对应元素加在一起的运算,减法反之。
比方:
− − − − − − − − − − − − − − − − − − − − − − [ 12 3 − 1 3 22 2 3 1 3 ] + [ − 2 2 − 9 8 1 12 2 3 6 ] − − − − − − − − − − − − − − − − − − − − − − = [ 12 − 2 3 + 2 − 1 − 9 3 + 8 22 + 1 2 + 12 3 + 2 1 + 3 3 + 6 ] − − − − − − − − − − − − − − − − − − − − − − = [ 10 5 − 10 11 23 14 5 4 9 ] − − − − − − − − − − − − − − − − − − − − − − \\ ---------------------- \\\left[ \begin{matrix} 12 & 3 & -1 \\ 3 & 22 & 2 \\ 3 & 1 & 3 \end{matrix} \right] + \left[ \begin{matrix} -2 & 2 & -9 \\ 8 & 1 & 12 \\ 2 & 3 & 6 \end{matrix} \right] \\ ---------------------- \\ = \left[ \begin{matrix} 12 - 2 & 3 + 2 & -1 -9 \\ 3 + 8 & 22 + 1 & 2 + 12 \\ 3 + 2 & 1 + 3 & 3 + 6 \end{matrix} \right] \\ ---------------------- \\ = \left[ \begin{matrix} 10 & 5 & -10 \\ 11 & 23 & 14 \\ 5 & 4 & 9 \end{matrix} \right]\\ ---------------------- −−−−−−−−−−−−−−−−−−−−−− 12333221−123 + −282213−9126 −−−−−−−−−−−−−−−−−−−−−−= 12−23+83+23+222+11+3−1−92+123+6 −−−−−−−−−−−−−−−−−−−−−−= 101155234−10149 −−−−−−−−−−−−−−−−−−−−−−
矩阵和标量的乘法
多少意义:矩阵与标量的乘法在多少上表现对矩阵所代表的向量或向量聚集的缩放操纵。
[*]当标量大于1时,矩阵代表的向量或向量聚集会在各个维度上被拉伸(stretch);
[*]当标量在0和1之间时,它们会被压缩(shrink);
[*]当标量为0时,效果会是一个行列数稳固的零矩阵;
[*]当标量小于0和-1之间时,它们会被压缩(shrink),且方向与原方向相反;
[*]当标量小于-1时,矩阵代表的向量或向量聚集会在各个维度上被拉伸(stretch),且方向与原方向相反。
应用场景:
[*]数据处置处罚:在数据分析和处置处罚中,标量乘法经常用于数据的缩放或归一化。通过调解标量的巨细,可以将数据的范围调解到特定的区间内,以便于后续的分析或盘算。好比在呆板学习范畴就经常必要对特性举行归一化处置处罚,以进步模子的训练效果和性能;
[*]图形变更:在盘算机图形学中,标量乘法常用于图形的缩放变更。通过调解标量的巨细,可以改变图形的巨细而不改变其外形或方向。在游戏开发范畴属于非经常用的应用场景;
[*]物理学模仿:物体膨胀、热胀冷缩等情况都可以使用标量乘法来实现;
[*]矩阵盘算:在矩阵运算时也经常必要用到标量乘法联合其他矩阵运算。
先决条件:没什么限定,恣意乘。
满意定律:
[*]矩阵和标量的乘法满意分配率,即 k(A + B) = kA + kB;
[*]矩阵和标量的乘法满意联合律,即 (jk)A = j(kA);
[*]矩阵和标量的乘法不满意互换律。
盘算方法:矩阵和标量的乘法非常简单,就是矩阵的每个元素和该标量相乘。
公式如下:
− − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − k ∗ M = M ∗ k = k [ M 1 , 1 M 1 , 2 M 1 , 3 M 2 , 1 M 2 , 2 M 2 , 3 M 3 , 1 M 3 , 2 M 3 , 3 ] = [ k M 1 , 1 k M 1 , 2 k M 1 , 3 k M 2 , 1 k M 2 , 2 k M 2 , 3 k M 3 , 1 k M 3 , 2 k M 3 , 3 ] − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − − \\ --------------------------------- \\k*M = M*k = k\left[ \begin{matrix} M_{1,1} & M_{1,2} & M_{1,3} \\ M_{2,1} & M_{2,2} & M_{2,3} \\ M_{3,1} & M_{3,2} & M_{3,3} \end{matrix} \right] = \left[ \begin{matrix} kM_{1,1} & kM_{1,2} & kM_{1,3} \\ kM_{2,1} & kM_{2,2} & kM_{2,3} \\ kM_{3,1} & kM_{3,2} & kM_{3,3} \end{matrix} \right]\\ --------------------------------- −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−k∗M=M∗k=k M1,1M2,1M3,1M1,2M2,2M3,2M1,3M2,3M3,3 = kM1,1kM2,1kM3,1kM1,2kM2,
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
页:
[1]