首页 > 其他分享 >矩阵基础知识

矩阵基础知识

时间:2023-02-22 00:13:37浏览次数:44  
标签:转置 单位矩阵 矩阵 transform 基础知识 Matrix4x4 var

这边不去理解或推导为什么要这么算,没啥实际意义,都是直接按矩阵规定好的公式套用

 

加减法

C=A+B

C=A-B

a) A和B的行和列必须相同

 

 

 

乘法, 没有除法

C=A*B

a) A的列数和B的行数相同才能相乘,结果矩阵C的行列为:A的行数,B的列数

b1) 示例1,2列*2行,结果为2行2列。

A的第1行与B的第1列进行运算,A的第2行与B的第1列进行运算

 

b2) 示例2,2列*2行,结果为1行1列

A的第1行与B的第1列进行运算

 

c) 不满足交换律:A*B和B*A会得到不同行列的C

d) 满足结合律:(A*B)*C=A*(B*C)

e) 满足分配律:(A+B)*C=A*C+B*C, A*(B+C)=A*B+A*C

 

 

转置矩阵

就是把矩阵的行列互换

Matrix4x4 m = new Matrix4x4();
m.m00 = 1;
m.m01 = 2;
m.m02 = 3;
m.m03 = 4;
Debug.Log($"{m}");

var m2 = Matrix4x4.Transpose(m);
Debug.Log($"{m2}");

结果

 

 

逆矩阵

a) 必须是方阵,但并不是所有方阵都有逆矩阵

b) 原矩阵*逆矩阵,结果为单位矩阵。m*m-1=I

c) 求逆矩阵的方法,这边不做介绍,这边只关心用途。Unity里直接用Matrix4x4.Inverse就可以得到。

d) 在Unity中的用途之一:用于将worldPos转换为localPos。

原理就是求transform.localToWorldMatrix的逆矩阵,得到worldToLocalMatrix。

var m3 = this.transform.localToWorldMatrix * this.transform.worldToLocalMatrix;
Debug.Log($"{m3}"); //验证下结果是否为单位矩阵

var worldPos = this.transform.TransformPoint(new Vector3(1, 0, 0));
var localPos = this.transform.InverseTransformPoint(worldPos);

 

 

正交矩阵 

a) 定义:方阵*它的转置矩阵结果为单位矩阵,这个方阵就是正交的,叫做正交矩阵

b) 正交矩阵的转置矩阵=逆矩阵

c) 用途:转置矩阵直接当逆矩阵用,优化计算效率。

 

 

参考

矩阵乘法 - 博客园 (cnblogs.com)

图形学知识基础:矩阵_王王王渣渣的博客-CSDN博客_图形学 矩阵

矩阵和矩阵乘法的直观化理解_拂面清风三点水的博客-CSDN博客_矩阵与矩阵乘法感悟

MathTool - 公式编辑器 (imathtool.com)

标签:转置,单位矩阵,矩阵,transform,基础知识,Matrix4x4,var
From: https://www.cnblogs.com/sailJs/p/16476005.html

相关文章

  • POJ 1050 To the Max 矩阵最大和的子数组:动态规划
    将原来的矩阵直接改造成dp矩阵dp[i][j]表示以以a[0][0]为左上角a[i][j]为右下角的矩阵之和所以一个O(n......
  • 【线性代数复习笔记】矩阵特征值,特征向量,相似对角化与实对称矩阵
    【线性代数复习笔记】矩阵特征值,特征向量,相似对角化与实对称矩阵线代好难-_-特征值与特征向量:1.求解特征值与特征向量:​ 先计算特征多项式f(ʎ)=|ʎI-A|,求出根,再根据......
  • python混淆矩阵可视化【热力图】
    依赖包seaborn 和 matplotlib 已经提供了很多种绘制方法了,后文各种方法都是围绕着这个进行的importitertoolsimportnumpyasnpimportpandasaspdimportsea......
  • 【数组与链表算法】矩阵算法在程序中常见的简单应用 | C++
    第二十三章矩阵算法:::hljs-center目录第二十三章矩阵算法●前言●矩阵算法与深度学习●一、矩阵相加●二、矩阵相乘●三、矩阵转置●四、稀疏矩阵●......
  • Java基础知识(23)- Java虚拟机(JVM)- (2) | 常用的 JVM 性能调优监控工具
    在企业级Java应用开发中,Java程序运行过程中会经常遇到内存不足、内存泄露、线程死锁、CPU高占用等问题。部分问题在日常开发中可能会被忽视或被别变通的方法绕开(比如重......
  • 矩阵之坐标系变换
    常规的平移、旋转、镜像矩阵相信大家都已经比较清楚了今天说一下坐标系变换矩阵不考虑平移的情况下如下图所示,P点在B坐标系下的坐标为(2,2),如何求出点P在A坐标系下的坐......
  • 01 矩阵
    01矩阵给定一个由0和1组成的矩阵mat ,请输出一个大小相同的矩阵,其中每一个格子是mat中对应位置元素到最近的0的距离。两个相邻元素间的距离为1。示例1:输......
  • HDOJ2156分数矩阵
    分数矩阵TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):8311    AcceptedSubmission(s):4764......
  • 基础知识-数据包和帧
    什么是数据包和帧数据包和帧是小块数据,当它们组合在一起时,会形成更大的信息或消息。但是,它们在OSI模型中是两个不同的东西。帧位于第2层-数据链路层,这意味着没有IP......
  • 指针和字符串基础知识
    #include"stdafx.h"intmain(intargc,char*argv[]){//定义字符串的第一种方式,此种定义的字符可修改chara[]="it";a[0]='T';printf("%s\n",a);//定义字......