Unity Shader数学基础——矩阵

2023-10-29

矩阵的定义

由m×n个数a,排成的m行n列的数表称为m行n列的矩阵,简称m×n矩阵。记作:

这m×n个数称为矩阵A的元素,简称为元,数a位于矩阵A的第i行第j列,称为矩阵A的(i,j)元,以数a为(i,j)元的矩阵可记为(a)或(a)m×n,m×n矩阵A也记作Amn。

元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。

矩阵基本运算

加法

矩阵的加法满足下列运算律(A,B,C都是同型矩阵):

应该注意的是只有同型矩阵之间才可以进行加法

减法

数乘

矩阵的数乘满足以下运算律

转置

把矩阵A的行和列互相交换所产生的矩阵称为A的转置矩阵(Aᵀ ),这一过程称为矩阵的转置。

    

性质一: 矩阵转置的转置等于原矩阵。(Mᵀ )ᵀ =M   

性质二:矩阵串接的转置,等于反向串接各个矩阵的转置。(AB)ᵀ =Bᵀ Aᵀ                                    

矩阵乘法

两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵

矩阵的乘法满足以下运算律:

结合律: (AB)C=A(BC)

左分配律: (A+B)C=AC+BC

右分配律: C(A+B)=CA+CB

矩阵乘法不满足交换律。

特殊矩阵

方块矩阵

方块矩阵简称方阵,是指那些行和列数目相等的矩阵。在三维渲染里最常用的就是3X3和4X4的方阵。

矩阵的一些运算和性质只有方阵才具有。例如,对角元素。方阵的对角元素指的是行号和列好相等的元素,把方阵看做一个正方形的话,那些元素排列在正方形的对角线上。如果一个矩阵除了对角元素外的所有元素都为0,那么这个矩阵就叫做对角矩阵。

单位矩阵

一个特殊的对角矩阵是单位矩阵,用In来表示。

逆矩阵

不是所有的矩阵都有逆矩阵,前提他必须是一个方阵。

给定一个方阵M,他的逆矩阵用M⁻¹ 来表示。逆矩阵最重要的性质就是,如果我们把M和M⁻¹相乘,那么他们的结果将会是一个单位矩阵。MM⁻¹=M⁻¹M=I;

性质一:逆矩阵的逆矩阵是原矩阵本身。

性质二:单位矩阵的逆矩阵是他本身。

性质三:转置矩阵的逆矩阵是逆矩阵的转置。(MT)⁻¹=(M⁻¹)T

性质四:矩阵串接相乘后的逆矩阵等于反向串接各个矩阵的逆矩阵。(AB)⁻¹=B⁻¹A⁻¹

正交矩阵

正交是矩阵的一种属性。如果一个方阵M和他的转置矩阵的乘积是单位矩阵的话,那我们就说这个矩阵是正交的。反过来也是成立的。MMᵀ =Mᵀ M=I。

矩阵的几何意义

在游戏世界中,变换一般包含旋转,缩放,平移。开发人员希望给定一个点或者矢量,再给定一个变换,就可以通过某个数学运算来求得新的点和矢量。

变换是指,我们把一些数据,如点,方向矢量甚至颜色等,通过某种方式进行转换的过程。在计算机图形学领域,变换非常重要。尽管通过变换我们能够进行的操作是有限的,但是这些操作已经足够奠定变换在图形学领域举足轻重的地位了。

线性变换。线性变换指的是那些可以保留矢量加和矢量乘的变换。缩放就是一种线性变换。旋转也是一种线性变换,如果我们要对一个三维矢量进行变换,那么仅用3X3的矩阵就可以表示所有的线性变换。

线性变换除了旋转和缩放以为,还包括错切,镜像,也被称为正交投影等。

但是一般的线性变换还是不够的,我们来考虑平移变换就不是一个线性变换。

这样我们就有了仿射变换。仿射变换就是合并线性变换和平移变换的变换类型,仿射变换可以用一个4X4的矩阵来表示,为此我们需要吧矢量扩展到四维空间下,这就是齐次坐标空间。

齐次坐标

由于3X3的矩阵不能代表平移操作,我们需要将其扩展到4X4的矩阵,为此,我们还需要把原来的三维矢量转换成四位矢量,也就是我们说的齐次坐标。

齐次坐标是一个四维矢量。

平移矩阵

缩放矩阵

旋转矩阵

复合变换

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity Shader数学基础——矩阵 的相关文章

  • unity后台加密时间锁

    前言 在做一些项目的时候 有些不良甲方在给完项目后会有不给尾款的情况 之前都是加一些水印啥的 感觉不是很方便 第一不美观 第二如果甲方给完尾款后还得重新打包去水印 然后又做过一个本地的时间锁 等到时间 程序直接退出 但是感觉还是不方便 有时
  • Unity 键盘控制人物移动——之输入方式代码的编写

    键盘输入 控制人物移动 在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色 那么我们首先需要获取键盘输入 以下提供两种方法获取键盘 这里尽量通过截图解释让大家理解代码的含义 GetInput void FixedUpdate Move
  • unity: C#的Action Event Delegate的异同

    目录 一 Action 二 Event 三 Action和Event区别 四 Delegate 总结 Action Event Delegate的异同 前言 Action Event和Delegate都是C 语言中的重要概念 分别用于管理函
  • 矩阵的分解——LU分解

    LU分解 LU分解是矩阵分解的一种 将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积 有时需要再乘上一个置换矩阵 LU分解可以被视为高斯消元法的矩阵形式 在数值计算上 LU分解经常被用来解线性方程组 且在求逆矩阵和计算行列式中都是一个关
  • matlab 计算点云中值

    目录 一 概述 1 算法概述 2 主要函数 二 代码示例 三 结果展示 四 参数解析 输入参数 输出参数 五 参考链接 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 概述
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • 近日,小序一

    最近啊 想明白一些事情 人活着 为了什么 为名利 为欲望 还是为来生 为名利者 争权夺势 终会迷失本心 为欲望者 浑浑噩噩 终会误入歧途 唯有为来生者 无欲无求 一心向善 一心向善者 是灵魂富有的人 但往往生活贫瘠 所以 我为什么 你又为什
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • Unity万向节死锁解决方案(2023/12/4)

    1 万向节死锁无法解决 这是因为它的特性就是如此 就像玻璃杯就是玻璃 这不可否认 别钻牛角尖昂 2 大多数情况下欧拉角足够用 例如 CF 摄像机不可能绕z轴旋转 x轴旋转也不会超过九十度 因为那样人物的腰子会被扭断 塔防游戏 保卫萝卜 吃鸡
  • unity3d 自定义的图片无法放入source image中

    须将图片的texture type改为 sprite
  • unity3d image组件不显示

    需要将UI组件放到画布下面
  • unity小球跟随音乐节奏放大缩小和改变颜色

    放在小球身上 设置对应组件即可 using System Collections using System Collections Generic using Unity VisualScripting using UnityEngine
  • 华为OD机试真题-螺旋数字矩阵-2023年OD统一考试(C卷)

    题目描述 疫情期间 小明隔离在家 百无聊赖 在纸上写数字玩 他发明了一种写法 给出数字 个数n 和 行数m 0 lt n 999 0 lt m 999 从左上角的1开始 按照 顺时针螺旋向内写 方式 依次写出2 3 n 最终形成一个 m行矩
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • MIT_线性代数笔记:第 23 讲 微分方程和 exp(At)

    目录 微分方程 Differential equations 矩阵指数函数 Matrix exponential e A t e At
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发常见操作梳理之NPC药品商店系统(NGUI版)

    后续会出UGUI Json的版本 敬请期待 游戏开发中经常会出现药品商店 实际操作与武器商店类似 甚至根据实际情况可以简化设置 废话不多说 直接上代码 药品商店的源码 using System Collections using Syste
  • 游戏开发中常见系统梳理之背包系统的实现一

    游戏中几乎都存在大大小小的背包系统 接下来我将讲述背包系统具体是如何实现的 完整源码 以下是使用unity NGUI实现 使用txt配置的方法 后续更新UGUI Json实现的背包系统敬请期待 背包中的物品我们常常将其制作成预设体 通过改变

随机推荐

  • Codeforces Round #660 (Div. 2)1388C - Uncle Bogdan and Country Happiness (好题,条件判断,DFS)

    题目大意 国家有N个城市 1号城市为首都 有M个国民 每个国民都在首都工作 晚上返回家中 给定每个城市有多少国民居住 每个城市都有一个心情检测器 当国民经过城市时 心情检测器根据国民的心情加减1 但是心情检测器并不精确 所以要求你去判断在所
  • 汽车电子相关术语

    SOA SOA Service Oriented Architecture 面向服务的架构 是一种在计算机环境中设计 开发 部署和管理离散模型的方法 是由Garnter1996年提出的概念 将应用程序的不同功能单元 称为服务 进行拆分 并通
  • NeRF论文翻译笔记

    分享 NeRF神经辐射场理解 深兰深延AI的博客 CSDN博客 神经辐射场 githubNeRF总结 https github com yenchenlin awesome NeRF 目录 摘要 1 介绍 2 相关工作 2 1 神经三维形状
  • ModuleNotFoundError: No module named 'exceptions'

    ModuleNotFoundError No module named exceptions 意味着你在你的代码中尝试使用了一个名为 exceptions 的模块 但是你的程序运行环境中找不到这个模块 这可能是因为这个模块没有安装 或者是你
  • MPC学习记录

    参考 无人驾驶车辆模型预测控制 第二版 第四章详细学习 算法部分 总系学不废的博客 CSDN博客 控制 模型预测控制MPC08 01总结修正 105664978 哔哩哔哩 bilibiliMPC 3 常用车辆模型 MATLAB 无人驾驶车辆
  • 用python计算工程量_使用python计算vintage

    coding utf 8 Created on Mon Jan 14 18 57 19 2019 author hinnc importnumpy as npimportpandas as pd from pandas tseries of
  • Python爬虫实战

    在本篇博客中 我们将使用Scrapy框架完成一个入门爬虫程序 在命令行创建scrapy项目 首先在命令行进入PyCharm的项目目录 然后执行 scrapy startproject 项目名 如ScrapyExample 生产爬虫项目 会自
  • eclipse如何安装server

    在eclipse中想添加配置server的是否 发现Preference目录里并没有Server这个选项 也就是说 我们并没有办法新建服务器 所以要安装一个server 1 eclipse help Install New Software
  • Java获取当前电脑的ip地址

    import java net Inet4Address import java net InetAddress import java net UnknownHostException author guochao version 1 0
  • 一文玩转pytorch转onnx-tensorRT ——(A)onnx转tensorRT

    说明 onnx和tensorRT是分开的 onnx像是prototxt和weight的打包在一起的东西 所以由onnx转到tensorRT下 还需要让onnx能搜索到 或parsing 所对应的层 caffeparsing有注册自定义层的函
  • C# 中的依赖注入模式

    依赖注入模式 DI 首先 依赖注入模式 是一种软件设计模式 它被称为 模式 因为它建议针对特定问题的低级特定实现 该模式旨在解决的主要问题是如何创建 松散耦合 的组件 它通过将组件的创建与其依赖项分开来实现这一点 此模式中有四个主要角色 类
  • Bitbucket入门手册

    老大要我去调研一下有什么好用的免费软件版本管理工具 有利于小团队开发的 我第一个想到的就是git 经常在git下东西 听说它的代码仓库好用 于是就注册了一个github的账号 创建仓库的时候才发现只能创建开源项目 私有仓库要收费 于是就在网
  • pyglet 绝对路径 相对路径

    加载绝对路径 加载 3D 模型文件 model path path to model obj model pyglet resource file model path import pyglet window pyglet window
  • 复现BART finetune历程

    复现BART finetune历程 准备 安装fairseq 使用fairseq官方提供的finetune代码 git clone https github com pytorch fairseq cd fairseq pip instal
  • 【科研论文】找到中文论文的英文引用格式

    引用 1 梁秀英 周风燃 陈欢 梁博 许锡晨 杨万能 基于运动恢复结构的玉米植株三维重建与性状提取 J 农业机械学报 2020 51 6 209 219 1 找到对应的期刊 基于运动恢复结构的玉米植株三维重建与性状提取 中国知网 2 打开期
  • 数据库设计的三大范式(举例详解)

    为了建立冗余较小 结构合理的数据库 设计数据库时必须遵循一定的规则 在关系型数据库中这种规则就被称为范式 范式是符合某一种设计要求的总结 因此要设计一个结构合理的关系型数据库 就必须要满足下面这三大范式 1NF 不可再分 1NF要求数据库的
  • 2023-2024 计算机信息安全专业毕设题目推荐

    0 简介 毕业季马上就要开始了 不少同学询问学长网安专业选题以及开题相关的问题 今天跟大家分享信息安全毕设选题 最新的信息安全 网络安全 专业毕设选题 难度适中 适合作为毕业设计 大家参考 学长整理的题目标准 相对容易 工作量达标 题目新颖
  • poi 合并单元格添加边框_如何在Excel中的文本和单元格边框之间添加空间

    poi 合并单元格添加边框 Adding a bit of extra padding to your cell boundaries can make it easier for you to read through data in a
  • 学习笔记-Matlab三维绘图

    三维绘图 plot3 x y z t 0 0 05 15 x exp 0 05 t cos 2 t y exp 0 05 t sin 2 t z t figure plot3 x y z xlabel x meters ylabel y m
  • Unity Shader数学基础——矩阵

    矩阵的定义 由m n个数a 排成的m行n列的数表称为m行n列的矩阵 简称m n矩阵 记作 这m n个数称为矩阵A的元素 简称为元 数a位于矩阵A的第i行第j列 称为矩阵A的 i j 元 以数a为 i j 元的矩阵可记为 a 或 a m n