stage3d编程-基础1(矩阵)

今天开始写关于矩阵的基础知识,只所以会谈矩阵,因为3d世界离不开矩阵。至于矩阵有何神秘,稍后便知。我现在都觉得那些数学家真的很流弊。

  

  1、定义

    一个mxn矩阵M是一个m行n列的数组(类似于二维数组)。行和列的数量指定了矩阵的维数。矩阵中的数值则被称之为元素。例如:

    stage3d编程-基础1(矩阵) - hao_hxg - hao_hxg的博客

 

    该图就描述了一个mxn的矩阵。矩阵的样子呢,也就是这个样子。那么根据这个定义,我们就可以随便写一下矩阵出来,例如1x4:|1 2 3 4|。例如:2x3:

  2、矩阵乘法

    定义:将设A是一个mxn矩阵,B是一个nxp矩阵,乘积AB由C表示,那么C则是一个mxp矩阵。其中C中的第ij个元素的值等于A的第i个行向量和B的第j个列向量的点积,也就是

  Cij = Ai ? Bj。(用到前面向量乘法中的点积),我一般记成行x列。注意:根据定义,A矩阵列数一定要与B的行数相同。乘法公式例子:

    

    在3d编程中,会经常用到矩阵乘法。例如一个点的坐标为(x, y, z)可以看成1x3矩阵(真实的不是这样),大家在做flash2d开发的时候,在使用bitmapdata.draw的时候就会发现,需要用到一个matrix类用来做平移旋转,这个其实就是一个3x3的矩阵。在3d世界中,使用的是4x4矩阵。但是也可以使用3x3矩阵(以后再谈为什么)。那么也就是说可以让一个点(x, y, z)通过一个3x4的矩阵进行变换。在这里就是1x3矩阵(点)乘以3x3矩阵(带平移旋转缩放),结果就是一个1x3的矩阵,那么这个矩阵其实就是一个坐标点。(在3d中,一个模型是由很多个点构成的,那么就可以将所有的点通过这种变换方式,达到让模型在3d空间中平移,缩放,旋转等操作,这个以后会详细谈到)。

    注意:矩阵AB的结果和矩阵BA的结果是不同得,因此AB != BA。根据定义可以很轻易的举个栗子推导出。例如1x3矩阵和3x1矩阵,前者结果为1x1矩阵,后者结果为3x3矩阵。

  3、转置矩阵

    对一个矩阵的行和列进行互换,就可以得到转置矩阵。也就是说mxn矩阵的转置矩阵是nxm。转置矩阵在某些运算下,需要用到,因为转置矩阵很特殊。可以观察得出,矩阵乘以它的转置矩阵就会得到一个mxm的矩阵。

  4、单位矩阵

    单位矩阵就是矩阵的特殊化。定义:一个mxm并且对角线为1,其余元素为0的矩阵。

    

    根据矩阵乘法定义,那么可以推导出,一个mxn的矩阵A乘以一个nxn的单位矩阵I,结果仍然为A。即AI=A。如果A是一个mxm的矩阵,那么AI=A,IA=A。

  5、逆矩阵

    注意:矩阵代数中没有除法运算,但是它定义了一种乘法的逆运算。逆矩阵有条件限制:

       只有mxm的矩阵才能做逆运算;一个mxm的逆矩阵仍然是mxm的矩阵;并不是所有的矩阵都有逆矩阵,有逆矩阵的称之为可逆,没有逆矩阵则称之为单调矩阵;如果存在逆矩阵,那么逆矩阵一定是唯一的;将一个矩阵和它的逆矩阵相乘,结果一定是一个单位矩阵。

 

原文来自:http://www.cnblogs.com/boblchen/articles/3310672.html

posted on 2016-07-29 08:00  bbox  阅读(358)  评论(0)    收藏  举报