added snippet VectorAngle

This commit is contained in:
ShraddhaBhojane
2019-12-16 15:43:13 +01:00
parent ebc4f9d3c8
commit 053b88314a

36
snippets/vectorAngle.md Normal file
View File

@ -0,0 +1,36 @@
---
title: vectorAngle
tags: math,intermediate
---
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.
```js
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));
});
```
```js
theta(3,4,4,3); // 0.283794109208328
```