/* 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 */
};
var a = new Vector3(4,8,10), b = new Vector3(9,2,7);
console.log(Vector3.theta(a, b));
粘贴到浏览器控制台
38.22886930505464
a · b = |a| × |b| × cos(θ)
Math.sqrt
标签:function,product,return,Vector3,magnitude,dot,var,夹角,Math From: https://blog.51cto.com/u_11658127/8920835