cc.Vec2
1.二维向量坐标,表结构{x:1,y:12}
点乘:两个向量的点乘结果是一个实数,等于两个向量对应分量乘积之和。点乘的结果可以表示两个向量的夹角大小。
叉乘(仅限三维向量):两个三维向量的叉乘结果是一个新的三维向量,垂直于原两个向量所在的平面。
创建两个向量及应用:
var w_pos = new cc.Vec2(100,100);
cc.log(w_pos);
w_pos = cc.v2(100,100);
cc.log(w_pos);
var src = cc.v2(100,0);
var dst = cc.v2(0,100);
var dir = src.sub(dst);
cc.log(dir);
dir = src.add(dst);
cc.log(dir);
var dotnum = src.dot(dst);
cc.log(dotnum);
cc.Vec3
2个向量叉乘的结果是垂直于这两个向量组成的平面的,可以用来构建一个三维坐标系
叉乘结果的模是这两个向量组成的平行四边形的面积。
一些三维向量的运算:
add(pos1: cc.Vec3, pos2: cc.Vec3): cc.Vec3 {
var outPos: cc.Vec3 = new cc.Vec3();
cc.Vec3.add(outPos, pos1, pos2);
return outPos;
}
dot(dir1: cc.Vec3, dir2: cc.Vec3): number {
var tempDir1: cc.Vec3 = dir1;
var tempDir2: cc.Vec3 = dir2;
return tempDir1.x * tempDir2.x + tempDir1.y * tempDir2.y + tempDir1.z * tempDir2.z;
}
cross(dir1: cc.Vec3, dir2: cc.Vec3): cc.Vec3 {
var i: cc.Vec3 = new cc.Vec3(1, 0, 0);
var j: cc.Vec3 = new cc.Vec3(0, 1, 0);
var k: cc.Vec3 = new cc.Vec3(0, 0, 1);
var tempDir1: cc.Vec3 = new cc.Vec3(dir1.x, dir1.y, dir1.z);
var tempDir2: cc.Vec3 = new cc.Vec3(dir2.x, dir2.y, dir2.z);
var iv: cc.Vec3 = i.multiplyScalar(tempDir1.y * tempDir2.z - tempDir2.y * tempDir1.z);
var jv: cc.Vec3 = j.multiplyScalar(tempDir2.x * tempDir1.z - tempDir1.x * tempDir2.z);
var kv: cc.Vec3 = k.multiplyScalar(tempDir1.x * tempDir2.y - tempDir2.x * tempDir1.y);
return iv.add(jv).add(kv);
}
var src2 = cc.v3(0,0,100);
var dst2 = cc.v3(100,0,0);
var dir2 = this.add(src2,dst2);
cc.log(dir2);
dir2 = this.cross(src2,dst2);
cc.log(dir2)
测试结果: