计算2个向量的夹角 dot product, cross product

vectors-dot-product

vectors-cross-product

/* https://www.mathsisfun.com/algebra/vectors-dot-product.html */
 
function Vector3(x, y, z) {
	this.x = x;
	this.y = y;
	this.z = z;
}
 
Vector3.prototype.magnitude = function() {
	return Math.sqrt(this.x*this.x + this.y*this.y + this.z*this.z);
};
 
Vector3.dotProduct = function(/* Vector3 */a, /* Vector3 */b) {
	return a.x*b.x + a.y*b.y + a.z*b.z;
};
 
Vector3.theta = function(/* Vector3 */a, /* Vector3 */b) {
	var ma = a.magnitude(), mb = b.magnitude();
	var dotX = Vector3.dotProduct(a, b);
	return Math.acos(dotX / (ma * mb))/Math.PI * 180; /* degree */
};

/* https://www.mathsisfun.com/algebra/vectors-cross-product.html */

Vector3.crossProduct = function(/* Vector3 */a, /* Vector3 */ b) {
	var cx = a.y * b.z - a.z * b.y,
		cy = a.z * b.x - a.x * b.z,
		cz = a.x * b.y - a.y * b.x;
	return new Vector3(cx, cy, cz);
};

Vector3.prototype.toString = function() {
	return "(" + this.x + ", " + this.y + ", " + this.z + ")";
};


var a = new Vector3(2, 3, 4), b = new Vector3(5, 6, 7);
console.log(Vector3.theta(a, b));
console.log(Vector3.crossProduct(a, b).toString());

 

 

粘贴到浏览器控制台

38.22886930505464 

a · b = |a| × |b| × cos(θ)

a × b = |a| |b| sin(θ) n

Math.sqrt

cross product

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fareast_mzh

打赏个金币

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值