Files
30-seconds-of-code/snippets/vectorAngle.md
ShraddhaBhojane 841f36044f Update snippets/vectorAngle.md
Co-Authored-By: Angelos Chalaris <chalarangelo@gmail.com>
2019-12-22 16:36:29 +01:00

977 B

title, tags
title tags
vectorAngle math,beginner

Returns the angle (theta) value between two vectors.

Use Math.trunc() to pick the integer value of length. Use slice() slice the incoming array into individual vectors. Use forEach(), Math.pow() and Math.sqrt() to iterate over the vectors and calculate the magnitude of each vector and the scalar product. Use Math.acos() to calculate arccos and get the theta.

const theta = ((...x) =>{ 
  let half = Math.trunc(x.length / 2);
  let a = x.slice(0 , half);
  let b = x.slice(half);  

  let magnitudeOfA = 0;
  a.forEach((a) => magnitudeOfA += Math.pow(a , 2));
  magnitudeOfA = Math.sqrt(magnitudeOfA);
  
  let magnitudeOfB = 0;
  b.forEach((b) => magnitudeOfB += Math.pow(b , 2));
  magnitudeOfB = Math.sqrt(magnitudeOfB);
  
  let scalar = 0;
  a.forEach((a , i) => scalar += a * b[i]);
  
  return Math.acos(scalar / (magnitudeOfA*magnitudeOfB));
});
theta(3,4,4,3); // 0.283794109208328