向量和矩阵你真的清楚吗

向量和矩阵你真的清楚吗

_wu_bruce关注IP属地: 宁夏

2020.01.17 17:43:01字数 3,885阅读 3,669

一、向量是什么东东

向量:在数学中,向量(也称为欧几里得向量、几何向量、矢量),指具有大小(magnitude)和方向的量。它可以形象化地表示为带箭头的线段。箭头所指:代表向量的方向;线段长度:代表向量的大小。与向量对应的量叫做数量(物理学中称标量),数量(或标量)只有大小,没有方向。

题外话:数学上,向量表示有两种选择:行向量和列向量。这两种方式没有本质区别,选取那种都可以。OpenGL ES中使用的是列向量。列向量和矩阵相乘实现变换时,只能在列向量前面乘以矩阵,而行向量反之,否则乘法没有意义。

代数表示

一般印刷用黑体的小写英文字母(a、b、c等)来表示,手写用在a、b、c等字母上加一箭头(→)表示,也可以用大写字母AB、CD上加一箭头(→)等表示。

坐标表示

平面直角坐标系中,分别取与x轴、y轴方向相同的两个单位向量i,j作为一组基底。a为平面直角坐标系内的任意向量,以坐标原点O为起点P为终点作向量a。由平面向量基本定理可知,有且只有一对实数(x,y),使得a=xi+yj,因此把实数对(x,y)叫做向量a的坐标,记作a=(x,y)。这就是向量a的坐标表示。其中(x,y)就是点P的坐标。向量a称为点P的位置向量。

向量的坐标表示

空间直角坐标系中,分别取与x轴、y轴,z轴方向相同的3个单位向量i,j,k作为一组基底。若为该坐标系内的任意向量,以坐标原点O为起点作向量a。由空间基本定理知,有且只有一组实数(x,y,z),使得a=ix+jy+kz,因此把实数对(x,y,z)叫做向量a的坐标,记作a=(x,y,z)。这就是向量a的坐标表示。其中(x,y,z),就是点P的坐标。向量a称为点P的位置向量。

当然,对于多维的空间向量,可以通过类推得到,此略。

向量的矩阵表示

向量的运算

加法

向量的加法满足平行四边形法则和三角形法则,

向量加法的运算律

交换律:a+b=b+a;

结合律:(a+b)+c=a+(b+c)。

减法

如果a、b是互为相反的向量,那么a=-b,b=-a,a+b=0. 0的反向量为0。OA-OB=BA.即“共同起点,指向被减”。a=(x1,y1),b=(x2,y2) ,则a-b=(x1-x2,y1-y2)。如图:c=a-b 以b的结束为起点,a的结束为终点。

加减变换律:a+(-b)=a-b。注意:(向量减法的方向指向被减数,(被减数 - 减数 = 差))

数乘

实数λ和向量a的叉乘乘积是一个向量,记作λa,且|λa|=|λ|*|a|。

当λ>0时,λa的方向与a的方向相同;当λ<0时,λa的方向与a的方向相反;当λ=0时,λa=0,方向任意。当a=0时,对于任意实数λ,都有λa=0。

注:按定义知,如果λa=0,那么λ=0或a=0。

实数λ叫做向量a的系数,乘数向量λa的几何意义就是将表示向量a的有向线段伸长或压缩。

当 |λ| >1时,表示向量a的有向线段在原方向(λ>0)或反方向(λ<0)上伸长为原来的|λ|倍

当|λ|<1时,表示向量a的有向线段在原方向(λ>0)或反方向(λ<0)上缩短为原来的 |λ|倍。

实数p和向量a的点乘乘积是一个数。

数与向量的乘法满足下面的运算律

结合律:(λa)·b=λ(a·b)=(a·λb)。

向量对于数的分配律(第一分配律):(λ+μ)a=λa+μa.

数对于向量的分配律(第二分配律):λ(a+b)=λa+λb.

数乘向量的消去律:① 如果实数λ≠0且λa=λb,那么a=b。② 如果a≠0且λa=μa,那么λ=μ。

需要注意的是:向量的加减乘(向量没有除法)运算满足实数加减乘运算法则。

数量积

题外话:数量积即指两个向量进行点乘运算,它的结果是一个数。求出的结果可表示两个向量之间的夹角,在游戏开发或者应用开发中可以使用。比如开发一个坦克游戏,坦克需要打击敌人,已知坦克朝向向量是(x1,y1,z1),敌人的位置是(x2,y2,z2),此时可以计算出敌人与坦克朝向之间的夹角。如果坦克想打击敌人,只需绕着相应轴旋转该角度即可。(如果坦克能绕任意轴旋转,那么它应该绕哪个轴呢,别急,下面有介绍,提前剧透,将两个向量叉乘即可得到该轴,因为叉乘结果是个向量)

定义:已知两个非零向量a,b,作OA=a,OB=b,则∠AOB称作向量a和向量b的夹角,记作θ并规定0≤θ≤π

定义:两个向量的数量积内积点积)是一个数量(没有方向),记作a·b。

若a、b不共线,则

a·b = |a|·|b|·cosθ

;若a、b共线,则

a·b=+-|a|·|b|

向量的数量积的坐标表示:a·b=x·x'+y·y'。

向量的数量积的运算律

a·b=b·a(交换律

(λa)·b=λ(a·b)(关于数乘法的结合律)

(a+b)·c=a·c+b·c(分配律

向量的数量积的性质

a·a=|a|的平方

a⊥b〈=〉a·b=0。

|a·b|≤|a|·|b|。(该公式证明如下:|a·b|=|a|·|b|·|cosα| 因为0≤|cosα|≤1,所以|a·b|≤|a|·|b|)

向量的数量积与实数运算的主要不同点

1.向量的数量积不满足结合律,即:(a·b)·c≠a·(b·c);例如:(a·b)²≠a²·b²。

2.向量的数量积不满足消去律,即:由a·b=a·c(a≠0),推不出b=c。

3.|a·b|与|a|·|b|不等价

4.由 |a|=|b| ,不能推出a=b,也不能推出a=-b,但反过来则成立。

向量积

题外话:向量积指的是两个向量进行叉乘运算,它的结果是一个向量,该向量垂直于通过叉乘计算的两个向量。还记得坦克攻击敌人那个问题吗,具体实施步骤可以先通过点乘求得需要旋转角度的角度,然后通过叉乘求得需要绕哪个向量旋转,然后求出旋转矩阵,将此旋转矩阵乘以坦克的朝向向量即可求出坦克打击敌人需要的朝向向量。注意旋转矩阵一般是4x4的,坦克朝向向量在(x1,y1,z1)的基础上增加一个w分量,即(x1,y1,z1,w),这样计算的时候好计算,即转化为齐次坐标。开发中经常提到向量的齐次坐标规范化,操作其实很简单,w值变为1,即将向量各个分量都除以w即可,规范化的齐次坐标向量为(x1/w,y1/w,z1/w,1)。

定义:两个向量a和b的向量积

(外积、叉积)是一个向量,记作a×b(这里“×”并不是乘号,只是一种表示方法,与“·”不同,也可记做“∧”)。若a、b不共线,则a×b的模是:∣a×b∣=|a|·|b|·sin〈a,b〉;a×b的方向是:垂直于a和b,且a、b和a×b按这个次序构成右手系。若a、b垂直,则∣a×b∣=|a|*|b|(此处与数量积不同,请注意),若a×b=0,则a、b平行。向量积即两个不共线非零向量所在平面的一组法向量。

运算法则:运用三阶行列式

设a,b,c分别为沿x,y,z轴的单位向量

A=(x1,y1,z1),B=(x2,y2,z2),则

向量的向量积性质:

|a×b|是以a和b为边的平行四边形面积。

a×a=0。

a平行b〈=〉a×b=0

向量的向量积运算律

a×b=-b×a

(λa)×b=λ(a×b)=a×(λb)

a×(b+c)=a×b+a×c.

(a+b)×c=a×c+b×c.

上两个分配律分别称为左分配律和右分配律。在演算中应注意不能交换“×”号两侧向量的次序。

注:向量没有除法,“向量AB/向量CD”是没有意义的。

提示:常用的一些向量知识介绍完毕,还有一些可自行学习。

二、矩阵是什么东东

定义

由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。记作:

这m×n 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称为矩阵A的(i,j)元,以数 aij为(i,j)元的矩阵可记为(aij)或(aij)m × n,m×n矩阵A也记作Amn。

元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。

基本运算

矩阵运算在科学计算中非常重要,而矩阵的基本运算包括矩阵的加法,减法,数乘,转置,共轭和共轭转置。

加法

矩阵的加法满足下列运算律(A,B,C都是同型矩阵):

A+B=B+A

(A+B)+C=A+(B+C)

应该注意的是只有同型矩阵之间才可以进行加法。

减法

数乘

矩阵的数乘满足以下运算律:

λ(μA)=μ(λa) λ(μA)=(λμ)A (λ+μ)A=λA+μA λ(A+B)=λA+λB

矩阵的加减法和矩阵的数乘合称矩阵的线性运算。

转置

共轭

共轭转置

乘法

两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如A是m×n矩阵和B是n×p矩阵,它们的乘积C是一个m×p矩阵。

C=(cij),它的一个元素:

并将此乘积记为:C=AB。例如:

矩阵的乘法满足以下运算律:

结合律:(AB)C=A(BC) 左分配律:(A+B)C=AC+BC 右分配律:C(A+B)=CA+CB

矩阵乘法不满足交换律

各种变换

OpenGL ES中的基本变换都是通过变换矩阵完成的。

平移变换

上述矩阵中的Tx,Ty,Tz分别表示平移变换中沿着x,y,z轴方向的位移。

旋转变换

在三维空间中旋转需要定义一个角和一个旋转轴。物体会沿着给定的旋转轴旋转特定角度。当二维向量在三维空间中旋转时,一般把旋转轴设为z轴。

给定一个角度,可以把一个向量变换为一个经过旋转的新向量。这通常是使用一系列正弦和余弦函数的各种巧妙的组合得到的。旋转矩阵在三维空间中每个单位轴都有不同定义,旋转角度用θ表示:

沿x轴旋转矩阵:

沿y轴旋转矩阵:

沿z轴旋转矩阵:

沿任意轴旋转矩阵:

缩放变换

下面构造一个变换矩阵来提供缩放功能。从单位矩阵(矩阵正斜对角线为1,其余为0的矩阵),每个对角线元素会分别与向量的对应元素相乘,而不会干扰其他维度上的向量值。对于需要将任意向量(x,y,x)分别缩放(S1,S2,S3)倍时,可以用这样的特性来构造缩放矩阵。如下:

组合变换

使用矩阵进行变换的真正厉害之处在于,根据矩阵之间的乘法,可以把多个变换组合到一个矩阵中。假设有一个顶点(x, y, z),希望将其缩放2倍,然后位移(1, 2, 3)个单位。需要一个位移和缩放矩阵来完成这些变换。其最终的组合变换矩阵如下:

当矩阵相乘时先写位移再写缩放变换。矩阵乘法是不遵守交换律的,这意味着它们的顺序很重要。当矩阵相乘时,在最右边的矩阵是第一个与向量相乘的,所以应该从右向左读这个乘法。建议在设计组合矩阵时,先进行缩放操作,然后是旋转,最后才是位移,否则它们会互相影响。比如,如果先位移再缩放,位移的向量也会同样被缩放。用最终的变换矩阵左乘我们的向量会得到以下结果:(下面的结果可以看出目标向量确实放大了两倍并进行了平移)

https://www.jianshu.com/p/794c1acc0689

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值