[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数学]向量的主要内容,如果未能解决你的问题,请参考以下文章