基础。处理多个向量。
1个单独的向量,在很多的时候,让你觉得已经足够的智能和强大,去应付这个世界上的各种问题。然而事实上,你很少只需要1个向量,通常,你需要使用2个,3个甚至更多的向量。所以管理多个向量是非常重要的,否则它们会脱离你的控制,要知道和一个失控的向量战斗不是一件好玩的事情。
首先,多数情况下,有多个向量影响物体。一个例子就是重力:当物体本身在移动(用一个向量表示),而重力会把物体往下拉。重力和其他的力一样,可以用一个向量来表示。此时就有2个向量,你需要找到2个向量的综合效果,以确定物体到底该怎么移动。为了将2个向量加起来,你需要把他们的分量加起来:
1.
resultv={};
2.
resultv.vx=v1.vx+v2.vx;
3.
resultv.vy=v1.vy+v2.vy;
如果你有更多的向量,你可以用同样的办法,把它们都加起来。
向量的投影。
有时候我们非常需要知道2个向量的方向关系,他们到底是把我们的物体往同一个方向牵引,还是一东一西呢。
1.
dp = v1.vx*v2.vx + v1.vy*v2.vy;
我们将2个向量的x分量相乘,y分量相乘,然后在相加。得到结果dp,称为“向量v1和向量v2的点乘”。dp并不是一个向量,而是一个数字,如果是正数,那么2个向量的方向是相同的(夹角小于90度),如果是负数,那么2个向量的方向是相反的(夹角大于90度)。
下面说下2个向量的投影问题。将向量在其他任意的坐标系(向量v2和它的法线构成了一个坐标系)里面进行转换是非常有用的,这样投影的分量就可以单独变化。计算v1在v2上的投影的办法是:
1.
proj.vx=dp*v2.dx;
2.
proj.vy=dp*v2.dy;
向量的投影也是一个向量。我们先计算出2个向量的点乘,再乘以向量v2的归一化向量,就得到了投影。
以下是我制作的一个关于投影向量的例子。你可以四处拖动那些点,以观察投影分量的变化:
黑线是向量v1,蓝线是向量v2以及它的法线,绿线和红线分别是v1在v2和v2的法线上的投影。你可以下载fla源文件。