图形学基础复习之矩阵

这些基础知识非常重要,但是每次学习后都会很快忘记,所以在这里记录一下理解的过程,方便日后能快速进行复习

矩阵只是一套数学工具,本身没有特定含义,将原有问题套用矩阵的方式计算会使过程更方便更快捷,其实将矩阵的计算过程一项一项拆分出来,和正常处理原有问题的计算方式是相同的。

一、矩阵计算


1.矩阵乘法

进行矩阵乘法的两个矩阵一定要满足 A的行数 = b的列数

最后得到的是一个 A行数*B列数的一个方形矩阵

把矩阵的行阵想像成多维向量,全部分解为向量的计算

Cij = dot(ai,bj) i为行号 j为列号

A*B = a11 a12 a13 * b11 b12 =

          a21 a22 a23    b21 b22

                                     b31 b32

结果为2*2矩阵C =

dot( vector3(a11,a12,a13) , vector3(b11,b21,b31) )       dot( vector3(a11,a12,a13) , vector3(b12,b22,b32) )

dot( vector3(a21,a22,a23) , vector3(b11,b21,b31) )       dot( vector3(a21,a22,a23) , vector3(b12,b22,b32) )


2.逆矩阵


进行逆运算的矩阵必须是个方形矩阵

一个N*N的矩阵M 的逆矩阵表示为 M-1(-1在指数位)


3.矩阵的转置

转置 = 交换矩阵的行和列 m*n的矩阵转置后变成n*m


二、矩阵变换

同前面所序,空间变换矩阵只是借用了矩阵这一计算方式来方便的进行空间变换,并不神奇,一个简单的例子 x=5 y=5的坐标 各偏移50 就是x+50,y+50 而用矩阵方式变换

[5,5,1] * 1 0 0

               0 1 0

               50 50 1

= dot(vector3(5,5,1) , vector3(1,0,50)) , dot(vector3(5,5,1) , vector3(0,1,50))

= 5*1 + 5*0 + 1*50 , 5*0 + 5*5 + 1*50 (点乘 = x1*y1 + x2*y2+x3*y3)

= 5 + 50 , 5 + 50 (最终还是回归了正常计算偏移的公式)

再形象的说就是矩阵是一套很好用的工具让你传的几个参数,以上平移变换就是传了9个参数进去,就可以得出平移结果,而这9个参数即是矩阵 不同功能的矩阵要传不同的参数进去,矩阵本身没有特定含义

1.平移变换矩阵

T(p) =

1 0 0 0

0 1 0 0

0 0 1 0

X Y Z 1

2.旋转变换

X(θ) =

1    0    0    0

0 cosθ sinθ 0

0 -sinθ cosθ 0

0    0      0     1

 

Y(θ) =

cosθ 0 -sinθ 0

0     1      0   0

sinθ 0  cosθ  0

0     0     0    1

 

Z(θ)=

cosθ sinθ 0 0

-sinθ cosθ 0 0

0     0      1   0

0     0      0   1


其实Z轴变换矩阵,去掉最后一行和最后一列即是二维中的旋转变换

 

3.缩放变换

S(q) =

qx 0 0 0

0 qy 0 0

0 0 qz 0

0 0 0 1


注:切线空间其实就是把3d模型身上的纹理皮,扒下来平铺成平面的,他基于的坐标系 normal全是朝上的,如果这张皮在重新蒙在模型上的时候,就得进行切线空间到世界空间矩阵的变换


注:因为矩阵运算不符合乘法交换率 M1*M2 != M2*M1 矩阵之间相乘的顺序得到的变换效果是不同的,并且矩阵分为行矩阵和列矩阵, 他们对于矩阵在乘法的左右位置也是不相同的 dx 与opengl默认的行列矩阵也是不相同的 在写通用渲染器时要将他们设成相同的矩阵类型,例如统一使用行矩阵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值