166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2012 The Chromium Authors. All rights reserved. 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be 366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file. 466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict'; 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.requireRawScript('../third_party/gl-matrix/src/gl-matrix/common.js'); 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.requireRawScript('../third_party/gl-matrix/src/gl-matrix/mat2d.js'); 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.requireRawScript('../third_party/gl-matrix/src/gl-matrix/mat4.js'); 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.requireRawScript('../third_party/gl-matrix/src/gl-matrix/vec2.js'); 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.requireRawScript('../third_party/gl-matrix/src/gl-matrix/vec3.js'); 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.requireRawScript('../third_party/gl-matrix/src/gl-matrix/vec4.js'); 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.exportTo('base', function() { 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var tmp_vec2 = vec2.create(); 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var tmp_vec2b = vec2.create(); 1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var tmp_vec4 = vec4.create(); 1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var tmp_mat2d = mat2d.create(); 1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.createFromArray = function(arr) { 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis if (arr.length != 2) 2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis throw new Error('Should be length 2'); 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var v = vec2.create(); 2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.set(v, arr[0], arr[1]); 2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return v; 2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.createXY = function(x, y) { 2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var v = vec2.create(); 3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.set(v, x, y); 3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return v; 3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.toString = function(a) { 3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return '[' + a[0] + ', ' + a[1] + ']'; 3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.addTwoScaledUnitVectors = function(out, u1, scale1, u2, scale2) { 3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis // out = u1 * scale1 + u2 * scale2 4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.scale(tmp_vec2, u1, scale1); 4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.scale(tmp_vec2b, u2, scale2); 4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.add(out, tmp_vec2, tmp_vec2b); 4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec3.createXYZ = function(x, y, z) { 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var v = vec3.create(); 4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec3.set(v, x, y, z); 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return v; 4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec3.toString = function(a) { 5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return 'vec3(' + a[0] + ', ' + a[1] + ', ' + a[2] + ')'; 5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis mat2d.translateXY = function(out, x, y) { 5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.set(tmp_vec2, x, y); 5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis mat2d.translate(out, out, tmp_vec2); 5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis mat2d.scaleXY = function(out, x, y) { 6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.set(tmp_vec2, x, y); 6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis mat2d.scale(out, out, tmp_vec2); 6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec4.unitize = function(out, a) { 6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis out[0] = a[0] / a[3]; 6766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis out[1] = a[1] / a[3]; 6866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis out[2] = a[2] / a[3]; 6966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis out[3] = 1; 7066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return out; 7166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 7266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 7366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.copyFromVec4 = function(out, a) { 7466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec4.unitize(tmp_vec4, a); 7566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis vec2.copy(out, tmp_vec4); 7666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 7766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 7866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return {}; 7966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 80