3D数学学习记录二

43 篇文章 30 订阅

2D变换矩阵的逆矩阵:

 

 

平移矩阵的逆矩阵:[1,0,-tx][0,1,-ty][0,0,1]就相当于之前的是往前移动,现在是往后移动了。

缩放矩阵的逆矩阵:[1/Sx,0,0][0,1/Sy,0][0,0,1]就相当于把之前X,Y乘以的倍数,现在除以它的倍数的倒数。

 

 

 

旋转矩阵的逆矩阵:[cosx,sinx,0][-sinx,cosx,0][0,0,1]就相当于把之前旋转过去的,转回来。

(注意:一个平移(旋转、缩放)后的 点 再乘以相应的逆矩阵就等于原来没有平移(旋转、缩放)的点。)

 

 

如果一个点只是单纯的乘以逆矩阵,那么这个逆矩阵和普通的变换矩阵作用是一样的,只不过作用是相反的而已。

 

 

2D变换的物体变换和坐标系变换:

物体变换就是物体的坐标系没有发生变换的变化,如下:

 

 

F(b1,b2,b3,O)是三维坐标系位置,M是变换矩阵,c是点的齐次坐标。

F(Mc)是物体变化的数学表达形式,括号引起来的意思是M只会对c进行变化(平移、缩放、旋转),不会对坐标系原点进行变换。

 

 

坐标系变化的数学表达式:FMc,M对点进行变换,也对坐标系原点进行变换了。

 

 

 

复合变换:把平移、旋转、缩放结合起来,形成一个复杂的变化过程。

矩阵乘法不满足交换律,所以不同的变换顺序得到的结果可能是不一样的。

 

 

比如:FRTc,代表的是物体变换(先对点进行T变换(平移变换),然后对点进行R变换(旋转变换)。

如果换成FTRc,则代表先进行旋转,再进行平移变换,结果肯定是不一样的。

 

 

F(R(Tc)) ->F(Rc*) -> Fc** -> c***;

((FR)T)c ->(F*T)c -> (F**)c -> c***;

前者是对物体变换得到最终的c***点,后者是对坐标系原点的变换(既坐标变换)得到最终的c***点,结果是一样的。

 

【注意:以下矩阵的用法:矩阵 * (四行一列齐次坐标)】也就是所谓的“左边是矩阵,右边是齐次坐标”!反过来是不行的!

平移矩阵:
3D变换:

100tx
010ty
001tz
0001

缩放矩阵 :

 

Sx000
0Sy00
00Sz0
0001

旋转矩阵:

点沿着x轴旋转,x的坐标不变。

 

1000
0cosx-sinx0
0sinxcosx0
0001

 

 

点沿着y轴旋转,y的坐标不变。

 

cosx0sinx0
0100
-sinx0cosx0
0001

点沿着z轴旋转,z的坐标不变。

 

 

 

cosx-sinx00
sinxcosx00
0010
0001

旋转这一部分有些难以理解,大概记住就OK了,如果研究下的话,可以自己画画,绕着Y转的话,你就不用管Y坐标了,因为它肯定不会变化的,只需作出一个XZ平面图,再这个平面图上对它进行研究,就跟2D旋转一样推理的。

 

 

在Unity中使用Matrix4x4.Translate(Vector3)创建一个平移矩阵。

Matrix4x4.Rotate(四元数)创建一个旋转矩阵。

Matrix4x4.Scale创建一个缩放矩阵。

Matrix4x4.TRS创建一个移动、旋转、缩放的复合矩阵。

 

 

使用Matrix4x4.MultiplyPoint或者Matrix4x4.MultiplyPoint3x4来变换一个点。

使用Matrix4x4.MultiplyVector来变换一个向量。

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值