3D程序开发数学基础

3D程序开发数学基础之向量

1、向量的基本概念

http://baike.baidu.com/view/77260.htm


2、向量的加法

设有两个向量 a=(x1, y1, z1), b=(x2,y2,z2)

那么 a+b=(x1+x2, y1+y2, z1+z2),

向量a的长度:

|a| = ;


3、向量的数量积(内积,点积)

4、向量的向量积(外积,叉积)


5、三个向量的混合积


3D程序开发数学基础之矩阵

以下内容来自http://www.tongji.edu.cn/~math/xxds/kcja/kcja_a/01.htm,如果对你有帮助可以到其网站上查看其它基础知识。

一、矩阵的基本概念

矩阵,是由个数组成的一个列的矩形表格,通常用大写字母表示,组成矩阵的每一个数,均称为矩阵的元素,通常用小写字母其元素表示,其中下标都是正整数,他们表示该元素在矩阵中的位置。比如,表示一个矩阵,下标表示元素位于该矩阵的第行、第列。元素全为零的矩阵称为零矩阵。

特别地,一个矩阵,也称为一个维列向量;而一个矩阵,也称为一个维行向量。

当一个矩阵的行数与烈数相等时,该矩阵称为一个阶方阵。对于方阵,从左上角到右下角的连线,称为主对角线;而从左下角到右上角的连线称为付对角线。若一个阶方阵的主对角线上的元素都是,而其余元素都是零,则称为单位矩阵,记为,即:。如一个阶方阵的主对角线上(下)方的元素都是零,则称为下(上)三角矩阵,例如,是一个阶下三角矩阵,而则是一个阶上三角矩阵。今后我们用表示数域上的矩阵构成的集合,而用或者表示数域上的阶方阵构成的集合。

二、矩阵的运算

1、矩阵的加法如果是两个同型矩阵(即它们具有相同的行数和列数,比如说),则定义它们的和仍为与它们同型的矩阵(即),的元素为对应元素的和,即:

给定矩阵,我们定义其负矩阵为:。这样我们可以定义同型矩阵的减法为:。由于矩阵的加法运算归结为其元素的加法运算,容易验证,矩阵的加法满足下列运算律:

1)交换律:

2)结合律:

3)存在零元:

4)存在负元:

2 、数与矩阵的乘法

为一个数,,则定义的乘积仍为中的一个矩阵,中的元素就是用数中对应的元素的道德,即。由定义可知:。容易验证数与矩阵的乘法满足下列运算律:

1

2

3

4

3、矩阵的乘法:

距阵,距阵,则矩阵可以左乘矩阵(注意:距阵德列数等与矩阵的行数),所得的积为一个距阵,即,其中,并且

据真的乘法满足下列运算律(假定下面的运算均有意义):

1)结合律:

2)左分配律:

3)右分配律:

4)数与矩阵乘法的结合律:

5)单位元的存在性:

阶方阵,则对任意正整数,我们定义:,并规定:由于矩阵乘法满足结合律,我们有:

注意:矩阵的乘法与通常数的乘法有很大区别,特别应该注意的是:

1)矩阵乘法不满足交换律:一般来讲即便有意义,也未必有意义;倘使都有意义,二者也未必相等(请读者自己举反例)。正是由于这个原因,一般来讲,

2)两个非零矩阵的乘积可能是零矩阵,即未必能推出或者(请读者自己举反例)。

3)消去律部成立:如果并且,未必有

4 、矩阵的转置

定义:设矩阵,我们定义的转置为一个矩阵,并用表示的转置,即:。矩阵的转置运算满足下列运算律:

1

2

3

4

5、对称矩阵

定义1.11阶方阵若满足条件:,则称为对称矩阵;若满足条件:,则称为反对称矩阵。若设,则为对称矩阵,当且仅当对任意的成立;为反对称矩阵,当且仅当对任意的成立。从而反对称局针对角线上的元素必为零。对称矩阵具有如下性质:

1)对于任意矩阵阶对称矩阵;而阶对称矩阵;

2)两个同阶(反)对称矩阵的和,仍为(反)对称矩阵;

3)如果两个同阶(反)对称矩阵可交换,即,则它们的乘积必为对称矩阵,即



glLoadIdentity和glMultMatrix



glLoadIdentity的作用是将当前模型视图矩阵转换为单位矩阵(行数和列数相同的矩阵,并且矩阵的左上角至右下角的连线上的元素都为1,其它元素都为0),这样可以方便矩阵的乘法运算。

        glMultMatrix矩阵的乘法.

        如:

glLoadIdentity();

glMultiMatrix(A);

glMultiMatrix(B);

glMultiMatrix(C);


针对行向量和当前矩阵,上述代码可等价于:

(vx vy vz 1) *C*B*A

结果是一个1行4列的矩阵。


你可能会奇怪,为什么程序和实际矩阵的运算顺序是相反的呢。可以这么想像一下,glMultiMatrix先将矩阵加入到一个栈中保存,当所有的glMultiMatrix操作都完成后,再依次从栈中将缓存的矩阵取出并做相应的乘法操作。由于栈结构是先进后出的数据结构,所以可以猜想glMultiMatrix在执行时并没有直接将矩阵进行计算,而是先将矩阵放在了栈缓存中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值