Skip to content

Commit

Permalink
vec2.normalize
Browse files Browse the repository at this point in the history
  • Loading branch information
sinisterchipmunk committed May 2, 2012
1 parent 9981a83 commit 30b4242
Showing 2 changed files with 36 additions and 0 deletions.
21 changes: 21 additions & 0 deletions gl-matrix.js
Original file line number Diff line number Diff line change
@@ -2399,6 +2399,27 @@
return dest;
};

/**
* Normlize a vec2
*
* @param {vec2} vec vec2 to normalize
* @param {vec2} [dest] vec2 receiving operation result. If not specified result is written to vec
*
* @returns {vec2} dest if specified, vec otherwise
*/
vec2.normalize = function (vec, dest) {
if (!dest) { dest = vec; }
var mag = vec[0] * vec[0] + vec[1] * vec[1];
if (mag > 0) {
mag = Math.sqrt(mag);
dest[0] = vec[0] / mag;
dest[1] = vec[1] / mag;
} else {
dest[0] = dest[1] = 0;
}
return dest;
};

/*
* Exports
*/
15 changes: 15 additions & 0 deletions spec/javascripts/vec2_spec.js
Original file line number Diff line number Diff line change
@@ -13,6 +13,21 @@ describe("vec2", function() {
});
});

describe("normalize", function() {
describe("with dest given", function() {
beforeEach(function() { result = vec2.normalize(vecA, dest); });
it("should store normal in dest", function() { expect(dest).toBeEqualish([ 0.4472135954999579, 0.8944271909999159 ]); });
it("should return dest", function() { expect(result).toBe(dest); });
it("should not alter vecA", function() { expect(vecA).toBeEqualish([1, 2]); });
});

describe("with dest not given", function() {
beforeEach(function() { result = vec2.normalize(vecA); });
it("should store normal in vecA", function() { expect(vecA).toBeEqualish([ 0.4472135954999579, 0.8944271909999159 ]); });
it("should return vecA", function() { expect(result).toBe(vecA); });
});
});

describe("negate", function() {
describe("with dest given", function() {
beforeEach(function() { result = vec2.negate(vecA, dest); });

0 comments on commit 30b4242

Please sign in to comment.