23 lines
484 B
JavaScript
23 lines
484 B
JavaScript
module.exports = normalize;
|
|
|
|
/**
|
|
* Normalize a vec3
|
|
*
|
|
* @param {vec3} out the receiving vector
|
|
* @param {vec3} a vector to normalize
|
|
* @returns {vec3} out
|
|
*/
|
|
function normalize(out, a) {
|
|
var x = a[0],
|
|
y = a[1],
|
|
z = a[2]
|
|
var len = x*x + y*y + z*z
|
|
if (len > 0) {
|
|
//TODO: evaluate use of glm_invsqrt here?
|
|
len = 1 / Math.sqrt(len)
|
|
out[0] = a[0] * len
|
|
out[1] = a[1] * len
|
|
out[2] = a[2] * len
|
|
}
|
|
return out
|
|
} |