/** * @license MIT * taksim.io/vec2 v0.1.1 * https://github.com/taksim-io/vec2 * Copyright (c) 2015 taksim.io */ !function(t,n){if("function"==typeof define&&define.amd)define(n);else if("object"==typeof exports)module.exports=n(t);else{var i=n(t);t.Vec2||(t.Vec2=i),t.taksim||(t.taksim={}),t.taksim.Vec2=i}}(this,function(){"use strict";function t(t,i){var r=this._t||(this._t={});r[h]={},r[h].x=this.x=n(t,0),r[h].y=this.y=n(i,0)}function n(t,n){var i=parseFloat(t);return isNaN(i)?n:i}function i(t,n){return Math.floor(Math.random()*(n-t+1))+t}function r(t){return t/(180/Math.PI)}function u(t){return t*(180/Math.PI)}function s(t,n){return t._t[h][n]}function e(t,n,i){return t._t[h][n]=i,i}var h="vec2",o=t.prototype;return o.set=function(t){return this.setX(t.x).setY(t.y)},o.setX=function(t){return this.x=n(t,this.x),this.maxX().minX()},o.setY=function(t){return this.y=n(t,this.y),this.maxY().minY()},o.reset=function(){return this.resetX().resetY()},o.resetX=function(){return this.setX(this._t.vec2.x)},o.resetY=function(){return this.setY(this._t.vec2.y)},o.zero=function(){return this.setX(0).setY(0)},o.add=function(t){return this.addX(t.x).addY(t.y)},o.addX=function(t){return this.setX(this.x+n(t,0))},o.addY=function(t){return this.setY(this.y+n(t,0))},o.subtract=function(t){return this.subtractX(t.x).subtractY(t.y)},o.subtractX=function(t){return this.setX(this.x-n(t,0))},o.subtractY=function(t){return this.setY(this.y-n(t,0))},o.multiply=function(t){return this.multiplyX(t.x).multiplyY(t.y)},o.multiplyX=function(t){return this.setX(this.x*n(t,1))},o.multiplyY=function(t){return this.setY(this.y*n(t,1))},o.divide=function(t){return this.divideX(t.x).divideY(t.y)},o.divideX=function(t){return this.setX(this.x/n(t,1))},o.divideY=function(t){return this.setY(this.y/n(t,1))},o.round=function(){return this.roundX().roundY()},o.roundX=function(){return this.setX(Math.round(this.x))},o.roundY=function(){return this.setY(Math.round(this.y))},o.invert=function(){return this.invertX().invertY()},o.invertX=function(){return this.setX(-this.x)},o.invertY=function(){return this.setY(-this.y)},o.rotateTo=function(t){var n=r(t),i=this.x,u=this.y;return this.setX(i*Math.cos(n)-u*Math.sin(n)).setY(i*Math.sin(n)+u*Math.cos(n))},o.rotateAdd=function(t){return this.rotateTo(this.angle()+t)},o.normalize=function(){var t=this.length();return t=t