Unity3D

来源:互联网 发布:qq飞车b车 大黄蜂数据 编辑:程序博客网 时间:2024/06/05 15:15

矩阵

一个m×n的矩阵是一个由m行n列元素排列成的矩形阵列。关于矩阵的更详细信息与计算在这里。

变换

基本概念

变换(transform)是把一些数据(点、矢量、颜色)通过某种方式进行转换的过程。

线性变换(Linear transform),是指可以保留矢量加和标量乘的变换。其数学公式是:

f(x)+f(y)=f(x+y)kf(x)=f(kx)

缩放(scale) 以及旋转(rotation)都是最普通的线性变换。

线性变换都包括:旋转、缩放、错切(Shear)、镜像(Mirroring)、正交投影(orthographic projection)。

仿射变换(affine transform)可以合并线性变换和平移变换,将仿射变换扩展到4维空间下用4x4的矩阵来表示,它就是齐次坐标空间(homogeneous space)

齐次坐标

齐次坐标就是将3x3矩阵(其不能表示平移操作),扩展到4x4的矩阵。

4x4的矩阵可以表示平移、缩放、变换,可以将4x4的就很分解成4个部分:

M3x301x3t3x11

其中,左上角的矩阵M3x3用于表示旋转和缩放,t3x1用于表示平移,01x3是零矩阵,右下角的是标量1。

平移矩阵

100001000010txtytz1xyz1=x+txy+tyz+tz1

结果x、y、z分量分别增加了一个位置的偏移,在3D中的可视化效果就是把(x,y,z)在空间中平移了(tx,ty,tz)个单位。

缩放矩阵

kx0000ky0000kz00001xyz1=kxxkyykzz1

对模型空间沿着x轴、y轴、z轴进行缩放。若kx=ky=kz,这样的缩放是统一缩放,否则是非统一缩放。

其逆矩阵是:

1kx00001ky00001kz00001

旋转矩阵

绕x轴旋转a度:

Rx(a)=10000cos(a)sin(a)00sin(a)cos(a)00001

绕y轴旋转a度:

Ry(a)=cos(a)0sin(a)00100sin(a)0)cos(a)00001

绕z轴旋转a度:

Rz(a)=cos(a)sin(a)00sin(a)cos(a)0000100001

复合变换

顺序是右乘且先缩放再旋转,最后平移。

Pnew=MtranslationMrotationMscalePold

原创粉丝点击