定義:函數
cp.Vect = function(x, y){ this.x = x; this.y = y; }
零向量常量:測試
cp.vzero = cp.v(0,0);
建立新結構體所用的便捷構造函數:this
cp.v(x, y)
v, v1, v2均爲cp.Vect, s,t,d,dist爲float
spa
cp.Bool cp.v.eql(v1, v2) – 檢測兩個向量是否相等。在使用C++程序時,Chipmunk提供一個重載操做符==
。(比較浮點數時要當心!)code
cp.Vect cp.v.add(v1, v2) – 兩個向量相加。在使用C++程序時,Chipmunk提供一個重載操做符+
。orm
cp.Vect cp.v.sub(v1, v2) – 兩個向量相減。在使用C++程序時,Chipmunk提供一個重載操做符-
。對象
cp.Vect cp.v.neg(v) – 使一個向量反向。在使用C++程序時,Chipmunk提供一個重載一個一元負操做符-
。ip
cp.Vect cp.v.mult(v, s) – 標量乘法。在使用C++程序時,Chipmunk提供一個重載操做符*
。rpc
cp.Float cp.v.dot(v1, v2) – 向量的點積。get
cp.Float cp.v.cross(v1, v2) – 2D向量交叉相乘的模。2D向量交叉相乘的積做爲一個只有z座標的3D向量的z值。函數返回z座標的值。
cp.Vect cp.v.perp(v) – 返回一個垂直向量。(旋轉90度)
cp.Vect cp.v.rperp(v) – 返回一個垂直向量。(旋轉-90度)
cp.Vect cp.v.project(v1, v2) – 返回向量v1在向量v2上的投影。
cp.Vect cp.v.rotate(v1, v2) – 使用複雜的乘法運算將向量v1按照向量v2旋轉。若是v1不是單位向量,則v1會被縮放。
cp.Vect cp.v.unrotate(v1, v2) – 和cpvrotate()相反。
cp.Float cp.v.len( v) – 返回v的長度。
cp.Float cp.v.lengthsq(v) – 返回v的長度的平方,若是隻是比較長度的話它的速度比cpvlength()快。
cp.Vect cp.v.lerp(v1, v2, t) – 在v1和v2之間線性插值。
cp.Vect cp.v.lerpconst(v1,v2, d) – 以長度d在v1和v2之間線性插值。
cp.Vect cp.v.slerp(v1, v2, t) – 在v1和v2之間球形線性插值。
cp.Vect cp.v.slerpconst(v1, v2, a) – 在v1和v2之間以不超過角a的弧度值球形線性插值。
cp.Vect cp.v.normalize(v) – 返回a的一個歸一化副本。做爲特殊例子,在調用cpvzero時返回cpvzero。
cp.Vect cp.v.clamp(v, len) – 將v固定到len上。
cp.Float cp.v.dist(v1, v2) – 返回v1和v2間的距離。
cp.Float cp.v.distsq(v1, v2) – 返回v1和v2間的距離的平方。若是隻是比較距離的話它比cpvdist()快。
cp.Bool cp.v.near(v1, v2, dist) – 若是v1和v2間的距離小於dist則返回真。
cp.Vect cp.v.forangle(a) – 返回所給角(以弧度)單位向量。
cp.Float cp.v.toangle(v) – 返回v所指的角度方向的弧度。
部分測試
//cp.Vect測試 var vect1 = cp.v(2, 3); var vect2 = cp.v(1, 1); var vect3 = new cp.Vect(2, 3); cc.log(cp.v.eql(vect1, vect2)); //false cc.log(cp.v.eql(vect1, vect3)); //true cc.log(cp.v.add(vect1, vect2)); //cp.v(3, 4)
參考: