[3D数学]向量

Posted tianjiuwan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[3D数学]向量相关的知识,希望对你有一定的参考价值。

<1>向量与标量:

                          向量:有方向有长度(非负,比如(1,0,0) 方向指向X+,长度为1。normalize向量规范化,向量方向不变,但是长度为1,计算向量夹角一般规范化向量,求出cosa的值,acos反余弦求夹角)

                         标量:只有长度(强调的是数值)

<2>向量的维度:

                           2维(0,1)  3维(0,0,1)  4维(0,1,1,0)  4维在CG语言中:比如color就有4个维度rgba  _Time也有四个维度;值得注意的是:2维用x,y表示 3维用x,y,z表示 4维用x,y,z,w表示 在CG语言中4维也可以用r,g,b,a表示

<3>位置与位移:

                            位置:很好理解是一个position,是一个坐标点

                            位移:比如我向前位移3步,我的位置发生了改变,但是这个位移却不是位置,它是由大小(3步)和方向(向前)构成,所以它能用向量表示

                            速度与速率:是一个向量吗?我行走的速度是10KM,明显是一个数值(速率);速度是10KM向北走,它可以用向量表示(速度);

<4>向量与位置:

                            现在有点(x,y) 有向量(x,y) 看似两个很相似,但是却不一样:向量[x,y]描述了远点到点(x,y)的位移量

                            任何一点都能用从远点开始的向量来表达

<5>线性代数:

                           数学中专门研究向量的分支称作线性代数

                          1. 零向量: 表示"没有位移" 

<6>向量的运算:

                           1.向量的模长(长度、大小):|v| = sqrt(v1^2+v2^2+v3^2+...vn^2)  所有分量的平方相加  再开平方   (其实就是三角形的斜边啦 勾股定律可以求斜边长度,三维向量更复杂)

                           2.向量*标量: 向量的分量分别*标量k=2   v=(x,y,z) * 2 = (2x,2y,2z);意义:向量*标量使得向量的长度增加了k倍,如果标量k<0 则向量方向相反

                           3.标准化向量:单位长度为1的向量,称为标准向量;在unity中向量m.normalize即可以规范化向量m;在CG语言中normalize(m)规范化向量m ;如何求向量的规范化向量:分量 / 向量模长

                           4.向量的加减:加法:对应分量的加减啦;几何解释:向量a,b的相加解释为:平移向量,使向量a的头连接向量b的尾,接着从a的尾向b的头画一个向量,得到的就是a+b,这就是向量假发的"三角形法则"

                                                                  向量解释为位移序列:[1,-3,-4]分解为:向右1个单位,向下3个单位,向前4个单位(这一概念将用在坐标系间转换向量)

                                                      减法:求点a到点b的向量 m = b-a;m = (b1-a1,b2-a2,b3-a3) = (x,y,z);那么问题来了:在unity中求a点到b点的距离我们是怎么求得的?

                                                                  dis = Vector3.Distance(a,b) 或者 dis = (a-b).magnitude 内部其实就是求出了两点的向量,再求向量的模长

                           5.向量的点乘(内积):Dot(a,b) 就是对应分量相乘再相加 a1*b1+a2*b2+..an*bn   或者 |a| * |b| *cos&    (1,1)*(-1,1) = 1*-1 + 1*1 = 0   或者 |(1,1)| * |(-1,1)| * cos90 = 1*1*0 = 0 

                                                                 向量点乘的结果是一个数值

                          6.向量的叉乘:Cross(a,b)如图:得到的值为以一个向量:垂直于a,b向量平面的法向量,这个法向量的长度与a,b夹角sin&有关;aXb的长度 = |a| * |b| * sin&

                                                   

                          

 

            

 

以上是关于[3D数学]向量的主要内容,如果未能解决你的问题,请参考以下文章

[3D数学]向量

3D数学基础向量

Unity3D 数学之向量

OpenGL 六 - 3D数学基础 - 向量矩阵及OpenGL中的变换

3D数学基础

卐 4-3D图形的数学