请大神解读下这几段代码含义

代码无法换行,分开粘贴

var hitAngle = cc.pToAngle(cc.p(toB.x - this.x, toB.y - this.y)) + angleOffset;
var scalarVelocity = cc.pLength(this._velocity) * 1.00000005;//标量速度
var velocityAngle = -cc.pToAngle(this._velocity) + 0.00000005 * hitAngle;//速度角度
this._velocity = cc.pMult(cc.pForAngle(velocityAngle), scalarVelocity);

我懒的破译了。。。

希望下面的可以帮到你

取中点:
ccpMidpoint(v1, v2); // 等价 ccp( (v1.x + v2.x)/2, (v1.y + v2.y)/2 );

点乘、叉乘、投影:
cc.pDot(v1, v2); // 等价 v1.x * v2.x + v1.y * v2.y;
ccpCross(v1, v2); // 等价 v1.x * v2.y - v1.y * v2.x;
ccpProject(v1, v2) // 返回的是向量v1在向量v2上的投影向量
求长度、距离和各自的平方值:

ccpLength(v) // 返回向量v的长度,即点v到原点的距离
cc.pLengthSQ(v) // 返回向量v的长度的平方,即点v到原点的距离的平方
cc.pDistance(v1, v2) // 返回点v1到点v2的距离
cc.pDistanceSQ(v1, v2) // 返回点v1到点v2的距离的平方
cc.pNormalize(v) // 返回v的标准化向量,就是长度为1
旋转、逆时针90度、顺时针90度:

cc.pRotate(v1, v2) ; // 向量v1旋转过向量v2的角度并且乘上向量v2的长度。当v2是一个长度为1的标准向量时就是正常的旋转了,可以配套地用ccpForAngle
cc.pPerp(v); // 等价于 ccp(-v.y, v.x); (因为opengl坐标系是左下角为原点,所以向量v是逆时针旋转90度)
cc.pRPerp(v); // 等价于 ccp(v.y, -v.x); 顺时针旋转90度
配套的有向量和弧度的转换向量,还有一些角度相关的:

cc.pForAngle(a) ; // 返回一个角度为弧度a的标准向量
cc.pForAngle(a/57.29577)// 返回一个角度为a的标准向量
cc.pToAngle(v); // 返回向量v的弧度
cc.pAngle(a, b); // 返回a,b向量指示角度的差的弧度值