cocos学习-Vec2、Vec3

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)

测试结果:

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值