UNPKG

vectors

Version:

A grab bag of vector utility functions for 2D and 3D vectors that operate on plain arrays

46 lines (33 loc) 900 B
/** ### `normalize(vec, scalar)` Normalizes the vector (i.e. scales it to make its distance 1 unit). ``` javascript var normalize = require('vectors/normalize')(2) normalize([3, 0]) === [1, 0] normalize([4, 3]) === [0.8, 0.6] ``` **/ module.exports = generator function generator(dims) { dims = +dims|0 var body = [] body.push('return function normalize'+dims+'(vec, scalar) {') var els = [] for (var i = 0; i < dims; i += 1) { els.push('vec['+i+']*vec['+i+']') } body.push('var mag = Math.sqrt(' + els.join('+') + ')') body.push('if (mag === 0) {') for (var i = 0; i < dims; i += 1) { body.push('vec['+i+'] = 0') } body.push('} else {') for (var i = 0; i < dims; i += 1) { body.push('vec['+i+'] /= mag') } body.push('}') body.push('return vec') body.push('}') return Function(body.join('\n'))() }