OLD | NEW |
(Empty) | |
| 1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 * Use of this source code is governed by a BSD-style license that can be |
| 3 * found in the LICENSE file. |
| 4 */ |
| 5 'use strict'; |
| 6 |
| 7 base.requireRawScript('../third_party/gl-matrix/src/gl-matrix/common.js'); |
| 8 base.requireRawScript('../third_party/gl-matrix/src/gl-matrix/mat2d.js'); |
| 9 base.requireRawScript('../third_party/gl-matrix/src/gl-matrix/vec2.js'); |
| 10 |
| 11 base.exportTo('base', function() { |
| 12 var tmp_vec2 = vec2.create(); |
| 13 var tmp_mat2d = mat2d.create(); |
| 14 |
| 15 vec2.createXY = function(x, y) { |
| 16 var v = vec2.create(); |
| 17 vec2.set(v, x, y); |
| 18 return v; |
| 19 }; |
| 20 |
| 21 vec2.asPoint = function(v) { |
| 22 return {x: v[0], |
| 23 y: v[1]}; |
| 24 } |
| 25 |
| 26 mat2d.translateInplace = function(inout, v) { |
| 27 mat2d.translate(tmp_mat2d, inout, v); |
| 28 mat2d.copy(inout, tmp_mat2d); |
| 29 } |
| 30 |
| 31 mat2d.translateInplaceXY = function(inout, x, y) { |
| 32 vec2.set(tmp_vec2, x, y); |
| 33 mat2d.translateInplace(inout, tmp_vec2); |
| 34 } |
| 35 |
| 36 mat2d.scaleInplace = function(inout, v) { |
| 37 mat2d.scale(tmp_mat2d, inout, v); |
| 38 mat2d.copy(inout, tmp_mat2d); |
| 39 } |
| 40 |
| 41 mat2d.scaleInplaceXY = function(inout, x, y) { |
| 42 vec2.set(tmp_vec2, x, y); |
| 43 mat2d.scaleInplace(inout, tmp_vec2); |
| 44 } |
| 45 |
| 46 mat2d.rotateInplace = function(inout, rad) { |
| 47 mat2d.rotate(tmp_mat2d, inout, rad); |
| 48 mat2d.copy(inout, tmp_mat2d); |
| 49 } |
| 50 |
| 51 function signPt(p1, p2, p3) |
| 52 { |
| 53 return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y); |
| 54 } |
| 55 |
| 56 function pointInTriangle2Pt(pt, p1, p2, p3) |
| 57 { |
| 58 var b1 = signPt(pt, p1, p2) < 0.0; |
| 59 var b2 = signPt(pt, p2, p3) < 0.0; |
| 60 var b3 = signPt(pt, p3, p1) < 0.0; |
| 61 return ((b1 == b2) && (b2 == b3)); |
| 62 } |
| 63 |
| 64 function pointInQuad2Pt(pt, q) |
| 65 { |
| 66 return pointInTriangle2Pt(pt, q.p1, q.p2, q.p3) || |
| 67 pointInTriangle2Pt(pt, q.p1, q.p3, q.p4); |
| 68 } |
| 69 |
| 70 return { |
| 71 pointInTriangle2Pt: pointInTriangle2Pt, |
| 72 pointInQuad2Pt: pointInQuad2Pt |
| 73 } |
| 74 }); |
OLD | NEW |