Unity Matrix 矩阵

线性代数

4X4单位矩阵

4*4矩阵表示4行4列:

矩阵的转置:把矩阵A的行换成同序数的列所得到的新矩阵称为A的转置矩阵,这一过程称为矩阵的转置。

逆矩阵: 设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。

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

 ,它的一个元素:并将此乘积记为:  .

计算法则:每一行的各个数与每一列的各个数相乘=等于该元素的乘积。

测试Unity 矩阵:

得出结果:

从输出可以看到unity的矩阵采用矩阵左乘法,即向量用列向量表示, 也正是因为采用列向量表示,  矩阵的16个元素(m[i]:i表示0~15)前面是个是第一列,然后是第二列,第三列和第四列。

Row 行;Cloum 列。

行矩阵:只有一行的矩阵,一般在矩阵中采用右乘。

例,该矩阵与4X4的矩阵相乘,结果为1*4的矩阵。

列矩阵:只有一列的矩阵,一般在矩阵中采用左乘,

例,4X4矩阵与该向量相乘,结果为4X1的矩阵。

Unity Shader

在Vertex Function函数中,将模型空间的顶点转换到投影空间, o.pos = mul(UNITY_MATRIX_MVP, v.vertex); 理解为矩阵采用左乘,顶点向量是列向量,使用齐次坐标得到4X1的矩阵.

将法向量转到世界空间

顶点从模型空间转换到世界坐标空间只需要乘以世界转换矩阵即可,但是顶点的法向量却不能通过直接乘以这个矩阵将其变换到世界空间。原因是世界矩阵不仅包含旋转,还有可能包含着缩放操作,如果模型被不成比例的缩放,在不同方向上会有不同程度的拉伸或者压缩,顶点的坐标会因而伸缩,但是如果对法向量进行同样的伸缩,那么变化后的法向量将不再垂直于对应的表面。因此对应没有缩放或等比缩放的世界转换矩阵,可以直接采用相同的转换矩阵作为法向量的变换矩阵。

时间: 2024-10-25 20:59:26

Unity Matrix 矩阵的相关文章

理解CSS3 transform中的Matrix(矩阵)

一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵)”的时候,难免会心生畏惧(即使你已经学过),正常心理.实际上,这玩意确实有点复杂. 然而,这却是屌丝逆袭的一个好机会. CSS同行间:你是不是有这样的感觉:哎呀呀,每天就是对着设计图切页面,貌似技术没有得到实质性地提升啊,或者觉得日后高度有限! 我们应该都知道二八法则(巴莱多定律),即任何一组东西中

css3 transform中的matrix矩阵

CSS3中的矩阵CSS3中的矩阵指的是一个方法,书写为matrix()和matrix3d(),前者是元素2D平面的移动变换(transform),后者则是3D变换.2D变换矩阵为3*3, 如上面矩阵示意图:3D变换则是4*4的矩阵. 有些迷糊?恩,我也觉得上面讲述有些不合时宜.那好,我们先看看其他东西,层层渐进——transform属性. 具体关于transform属性具体内容可以点击这里补个课.稍微熟悉的人都知道,transform中有这么几个属性方法: .trans_skew { trans

UVA 11149 - Power of Matrix(矩阵倍增)

UVA 11149 - Power of Matrix 题目链接 题意:给定一个n*n的矩阵A和k,求∑kiAi 思路:利用倍增去搞,∑kiAi=(1+Ak/2)∑k/2iAi,不断二分即可 代码: #include <cstdio> #include <cstring> const int N = 45; int n, k; struct mat { int v[N][N]; mat() {memset(v, 0, sizeof(v));} mat operator * (mat

Android Matrix矩阵详解

Android中有两个比较重要的矩阵,ColorMatrix和Matrix.ColorMatrix用来改变bitmap的颜色和透明度,Matrix用来对bitmap平移.缩放.错切. ColorMatrix(色彩矩阵) Android中Bitmap色彩用了一个[R, G, B, A],4*1的矩阵来保存. 如果想改变一个Bitmap的色彩该怎么办?现在来了解下ColorMatrix的相关知识.ColorMatrix 是一个4*5的矩阵. 我们用[R', G', B', A']来保存新的bitma

FZU 1911 Construct a Matrix ( 矩阵快速幂 + 构造 )

FZU 1911 Construct a Matrix (  矩阵快速幂 + 构造 ) 题意: 需要构造一个矩阵满足如下要求: 1.矩阵是一个S(N)*S(N)的方阵 2.S(N)代表斐波那契数列的前N项和模上M 3.矩阵只能由1, 0, -1组成 4.矩阵每行每列的和不能相等 Here, the Fibonacci numbers are the numbers in the following sequence: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 1

[ css 矩阵 Matrix 属性 ] css中transform的Matrix(矩阵)属性讲解及实例演示的区别

一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵)”的时候,难免会心生畏惧(即使你已经学过),正常心理.实际上,这玩意确实有点复杂. 然而,这却是屌丝逆袭的一个好机会. CSS同行间:你是不是有这样的感觉:哎呀呀,每天就是对着设计图切页面,貌似技术没有得到实质性地提升啊,或者觉得日后高度有限! 我们应该都知道二八法则(巴莱多定律),即任何一组东西中

汉澳matrix矩阵电脑

我在梦中想到超级计算机是超算电脑,采用大量阵列cpu和内存,完成并发计算.有个手机厂家提供服务因为使用普通机器,导致经常宕机,其实铁道部火车网络售票就是. 因为不能采用云服务,上万台计算机并行处理,所以处理能力是不够的. 于是我设计了一台电脑,主板上再插上几个小主板,小主板上有cpu,内存,固态存储等,大小跟光驱差不多,插上4个,8个,16个,完成阵列计算,通过操作系统分配计算到阵列上,从而高速迸发运算.一台机器计算力相当于上百台普通计算机.为了支持并发计算,程序设计需要改进,可以把指定程序代码

理解CSS3 transform中的Matrix(矩阵)——张鑫旭

by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2427 一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵)”的时候,难免会心生畏惧(即使你已经学过),正常心理.实际上,这玩意确实有点复杂. 然而,这却是屌丝逆袭的一个好机

matrix矩阵

matrix(a,b,c,d,e,f) x’        | a c e  |     x y’    =  | b d f  |     y 1        |  0 0 1  |    1 这就是矩阵的运算了,简化为公式:x’=ax+cy+ey’=bx+dy+f css3的transform属性很好用,其实可以变换为matrix矩阵工作,只需要给abcdef附上相应的值就可以了. 比如translate(tx,ty)可以由matrix(1,0,0,1,tx,ty)转换而来,计算方法见公式