js-2dmath
Version:
Fast 2d geometry math: Vector2, Rectangle, Circle, Matrix2x3 (2D transformation), Circle, BoundingBox, Line2, Segment2, Intersections, Distances, Transitions (animation/tween), Random numbers, Noise
2 lines • 67 kB
JavaScript
require=function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({"js-2dmath":[function(a,b){b.exports=a("Focm2+")},{}],"Focm2+":[function(a,b){a("./lib/math.js"),b.exports={Vec2:a("./lib/vec2.js"),Line2:a("./lib/line2.js"),Segment2:a("./lib/segment2.js"),Rectangle:a("./lib/rectangle.js"),AABB2:a("./lib/aabb2.js"),Circle:a("./lib/circle.js"),Triangle:a("./lib/triangle.js"),Polygon:a("./lib/polygon.js"),Beizer:a("./lib/beizer.js"),Matrix23:a("./lib/matrix23.js"),Matrix22:a("./lib/matrix22.js"),Collide:a("./lib/collide.js"),Intersection:a("./lib/intersection.js"),Transitions:a("./lib/transitions.js"),Xorshift:a("./lib/xorshift.js"),Noise:a("./lib/noise.js"),Draw:a("./lib/draw.js"),NMtree:a("./lib/nmtree.js"),Collision:{Response:a("./lib/collision/response.js"),GJK:a("./lib/collision/gjk.js"),EPA:a("./lib/collision/epa.js"),Manifold:a("./lib/collision/manifold.js"),SAT:a("./lib/collision/sat.js"),Resolve:a("./lib/collision/resolve.js")},NumericalIntegration:{RK4:a("./lib/numerical-integration/rk4.js"),Verlet:a("./lib/numerical-integration/verlet.js"),Euler:a("./lib/numerical-integration/euler.js")}},b.exports.globalize=function(a){var c;for(c in b.exports)"globalize"!==c&&(a[c]=b.exports[c])}},{"./lib/aabb2.js":3,"./lib/beizer.js":4,"./lib/circle.js":5,"./lib/collide.js":6,"./lib/collision/epa.js":7,"./lib/collision/gjk.js":8,"./lib/collision/manifold.js":9,"./lib/collision/resolve.js":10,"./lib/collision/response.js":11,"./lib/collision/sat.js":12,"./lib/draw.js":14,"./lib/intersection.js":15,"./lib/line2.js":16,"./lib/math.js":17,"./lib/matrix22.js":18,"./lib/matrix23.js":19,"./lib/nmtree.js":20,"./lib/noise.js":21,"./lib/numerical-integration/euler.js":22,"./lib/numerical-integration/rk4.js":23,"./lib/numerical-integration/verlet.js":24,"./lib/polygon.js":25,"./lib/rectangle.js":26,"./lib/segment2.js":27,"./lib/transitions.js":28,"./lib/triangle.js":29,"./lib/vec2.js":30,"./lib/xorshift.js":31}],3:[function(a,b){function c(a,b,c,d){var e=[a,b,c,d,!1];return p(e,e),e}function d(a,b,c){var d,e,f=[],g=a[0],h=a[1],i=a[2],j=a[3],k=(i-g)/b,l=(j-h)/c;for(d=0;b>d;++d)for(e=0;c>e;++e)f.push([g+d*k,h+e*l,g+(d+1)*k,h+(e+1)*l]);return f}function e(a){var b=[a[0],a[1],a[2],a[3],!1];return p(b,b),b}function f(a){return I=a[1],J=a[0][0],K=a[0][1],c(J-I,K-I,J+I,K+I)}function g(a){var b=[a[0][0],a[0][1],a[1][0],a[1][1],!1];return p(b,b),b}function h(){return[0,0,0,0,!0]}function i(a){return[a[0],a[1],a[2],a[3],a[4]]}function j(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4],a}function k(a,b,c){return a[0]=b[0]-c,a[1]=b[1]-c,a[2]=b[2]+c,a[3]=b[3]+c,a}function l(a,b,c){return a[0]=x(b[0],c[0]),a[1]=x(b[1],c[1]),a[2]=y(b[2],c[2]),a[3]=y(b[3],c[3]),a}function m(a,b,c,d){return a[0]=x(b[0],c[0]+d[0]),a[1]=x(b[1],c[1]+d[1]),a[2]=y(b[2],c[2]+d[0]),a[3]=y(b[3],c[3]+d[1]),a}function n(a,b,c,d,e){return a[0]=x(b[0],c[0]*e[0]+d[0]),a[1]=x(b[1],c[1]*e[1]+d[1]),a[2]=y(b[2],c[2]*e[0]+d[0]),a[3]=y(b[3],c[3]*e[1]+d[1]),a}function o(a){return(a[2]-a[0])*(a[3]-a[1])}function p(a,b){L=b[0]>b[2]?b[2]:b[0],M=b[0]>b[2]?b[0]:b[2],N=b[1]>b[3]?b[3]:b[1],O=b[1]>b[3]?b[1]:b[3],a[0]=L,a[1]=N,a[2]=M,a[3]=O,a[4]=!0}function q(a,b,c){return J=c[0],K=c[1],a[0]=b[0]+J,a[1]=b[1]+K,a[2]=b[2]+J,a[3]=b[3]+K,a}function r(a,b,c){return a[0]=x(y(b[0],c[0]),b[2]),a[1]=x(y(b[1],c[1]),b[3]),a}function s(a,b){return a[0]=.5*(b[0]+b[1]),a[1]=.5*(b[3]+b[2]),a}function t(a,b,c){switch(c){case z:a[0]=b[0],a[1]=b[1];break;case A:a[0]=.5*(b[2]-b[0])+b[0],a[1]=b[1];break;case B:a[0]=b[2],a[1]=b[1];break;case C:a[0]=b[0],a[1]=.5*(b[3]-b[1])+b[1];break;case D:a[0]=.5*(b[2]-b[0])+b[0],a[1]=.5*(b[3]-b[1])+b[1];break;case E:a[0]=b[2],a[1]=.5*(b[3]-b[1])+b[1];break;case F:a[0]=b[0],a[1]=b[3];break;case G:a[0]=.5*(b[2]-b[0])+b[0],a[1]=b[3];break;case H:a[0]=b[2],a[1]=b[3]}return a}function u(a,b){return a[0]<b[0]&&a[2]>b[0]&&a[1]<b[1]&&a[3]>b[1]}function v(a,b){return a[0]<=b[0]&&a[1]<=b[1]&&b[2]<=a[2]&&b[3]<=a[3]}function w(a){return 2*(a[2]-a[0])+2*(a[3]-a[1])}var x=Math.min,y=Math.max,z=1,A=2,B=3,C=4,D=5,E=6,F=7,G=8,H=9,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P={TOPLEFT:z,TOPMIDDLE:A,TOPRIGHT:B,CENTERLEFT:C,CENTER:D,CENTERRIGHT:E,BOTTOMLEFT:F,BOTTOM:G,BOTTOMRIGHT:H,create:c,fromAABB2Division:d,fromSegment2:e,fromCircle:f,fromRectangle:g,zero:h,clone:i,copy:j,expand:k,merge:l,offsetMerge:m,osMerge:n,area:o,normalize:p,translate:q,clampVec:r,center:s,align:t,isVec2Inside:u,isAABB2Inside:v,perimeter:w,contains:v};b.exports=P},{}],4:[function(a,b){function c(a,b,c,d,e,f,g,h){return[[a,b],[c,d],[e,f],[g,h]]}function d(a,b,c,d,e,f){return[[a,b],[c,d],[e,f]]}function e(a,b,c){return 4===b.length?(n=c*c,o=c*n,i=b[0],j=b[1],k=b[2],l=b[3],a[0]=i[0]+c*(3*-i[0]+c*(3*i[0]-i[0]*c))+c*(3*j[0]+c*(-6*j[0]+3*j[0]*c))+n*(3*k[0]-3*k[0]*c)+l[0]*o,a[1]=i[1]+c*(3*-i[1]+c*(3*i[1]-i[1]*c))+c*(3*j[1]+c*(-6*j[1]+3*j[1]*c))+n*(3*k[1]-3*k[1]*c)+l[1]*o):(i=b[0],j=b[1],k=b[2],m=1-c,a[0]=m*m*i[0]+2*m*c*j[0]+c*c*k[0],a[1]=m*m*i[1]+2*m*c*j[1]+c*c*k[1]),a}function f(a,b){var c,d,f=1/b,g=[];for(c=0;1>=c;c+=f)d=[0,0],g.push(e(d,a,c));return g}function g(a,b){b=b||.05;var c,d,f,g=0,i=[0,0];for(c=a[0][0],d=a[0][1],f=b;1+b>=f;f+=b)e(i,a,f),g+=h((i[0]-c)*(i[0]-c)+(i[1]-d)*(i[1]-d)),c=i[0],d=i[1];return g}var h=Math.sqrt,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p={cubic:c,quadric:d,solve:e,length:g,getPoints:f};b.exports=p},{}],5:[function(a,b){function c(a,b,c){return[[a,b],c]}function d(a,b){return[[a[0],a[1]],b]}function e(a){var b=[[0,0],0];return b[0][0]=.5*(a[0]+a[2]),b[0][1]=.5*(a[1]+a[3]),q=b[0][0]-a[0],r=b[0][1]-a[1],b[1]=G(q*q+r*r),b}function f(a,b){var c=[[0,0],0];return w(c[0],a),b?(H[0]=a[0][0]+.5*(a[1][0]-a[0][0]),H[1]=a[0][1],c[1]=t(c[0],H)):c[1]=t(c[0],a[0]),c}function g(a,b,c){var d=[[0,0],0];return c&&!b?(y(d[0],a),d[1]=u(d[0],a[0]),q=u(d[0],a[1]),q>d[1]&&(d[1]=q),d[1]=u(d[0],a[2]),q>d[1]&&(d[1]=q),d[1]=G(d[1]),d):(z(d[0],a),A(H,a),d[1]=u(d[0],H),B(H,a),q=u(d[0],H),q<d[1]&&(d[1]=q),C(H,a),q=u(d[0],H),q<d[1]&&(d[1]=q),d[1]=G(d[1]),d)}function h(a){return[[a[0][0],a[0][1]],a[1]]}function i(a,b){return a[0][0]=b[0][0],a[0][1]=b[0][1],a[1]=b[1],a}function j(a,b,c){return a[0][0]=b[0][0]+c[0],a[0][1]=b[0][1]+c[1],a[1]=b[1],a}function k(a,b,c){return a[0][0]=c[0],a[0][1]=c[1],a[1]=b[1],a}function l(a,b){return D(0,t(a[0],b[0])-a[1]-b[1])}function m(a){return E*a[1]}function n(a){return F*a[1]*a[1]}function o(a,b){return t(a[0],b)<a[1]}function p(a,b){var c=a[1];return b*c*c*.5}var q,r,s=a("./vec2.js"),t=(s.sub,s.distance),u=s.distanceSq,v=(s.midPoint,a("./rectangle.js")),w=v.center,x=a("./triangle.js"),y=x.circumcenter,z=x.center,A=x.abMidPoint,B=x.bcMidPoint,C=x.caMidPoint,D=Math.max,E=Math.TWOPI,F=(.25*Math.PI,Math.PI),G=Math.sqrt,H=[0,0],I={create:c,fromVec2:d,fromSegment2:e,fromRectangle:f,fromTriangle:g,clone:h,copy:i,translate:j,moveTo:k,distance:l,length:m,area:n,isVec2Inside:o,momentOfInertia:p,perimeter:m,move:k};b.exports=I},{"./rectangle.js":26,"./triangle.js":29,"./vec2.js":30}],6:[function(a,b){function c(a,b,c){return a>b-c&&b+c>a}function d(a,b,c,d,e,f){return a>e||e>c||b>f||f>d?!1:!0}function e(a,b){return d(a[0],a[1],a[2],a[3],b[0],b[1])}function f(a,b){return d(b[0],b[1],b[2],b[3],a[0],a[1])}function g(a,b){var c=a[0],e=a[1];return d(c[0],c[1],e[0],e[1],b[0],b[1])}function h(a,b){var c=b[0],e=b[1];return d(c[0],c[1],e[0],e[1],a[0],a[1])}function i(a,b){var c=b[0],d=b[1];return y(z,a[0],a[1],a[2],a[3],c,d),u(z[0],z[1],c,d)}function j(a,b){return i(b,a)}function k(a,b){var d=b[0];return c(b[1],(a[1]-d[1])/(a[0]-d[0]),D)}function l(a,b){var d=a[0];return c(a[1],(b[1]-d[1])/(b[0]-d[0]),D)}function m(a,b){strict=strict||!1;var c=a[1]+b[1],d=s.distanceSq(a[0],b[0]);return d>c*c?!1:!0}function n(a,b){var c=t(a[0],b),d=a[1],e=d*d;return e>=c}function o(a,b){n(b,a)}function p(a,b){A=v(a[2],a[0]),B=v(a[1],a[0]),C=v(b,a[0]);var c=w(A,A),d=w(A,B),e=w(A,C),f=w(B,B),g=w(B,C),h=1/(c*f-d*d),i=(f*e-d*g)*h,j=(c*g-d*e)*h;return i>=0&&j>=0&&1>i+j}function q(a,b){return p(b,a)}function r(a,b){return c(a[0],b[0],D)&&c(a[1],b[1],D)}var s=a("./vec2.js"),t=(s.distance,s.distanceSq),u=(s.midPoint,s.$near),v=s.sub,w=s.dot,x=a("./segment2.js"),y=x.$closestPoint,z=[0,0],A=[0,0],B=[0,0],C=[0,0],D=Math.EPS=.001,E={circle_circle:m,bb2_vec2:e,vec2_bb2:f,rectangle_vec2:g,vec2_rectangle:h,segment2_vec2:i,vec2_segment2:j,circle_vec2:n,vec2_circle:o,vec2_line2:k,line2_vec2:l,triangle_vec2:p,vec2_triangle:q,vec2_vec2:r};b.exports=E},{"./segment2.js":27,"./vec2.js":30}],7:[function(a,b){function c(a){return g(n,a[1],a[0]),g(o,a[2],a[1]),h(n,o)}function d(a,b){var c,d,e,h,k,l=1/0,m=[0,0],n=[0,0],o=a.length,q=o-1;for(d=0;o>d;d++)e=d===q?0:d+1,c=a[d],g(p,a[e],c),b>0?f.rotateCW(m,p):f.rotateCCW(m,p),i(m,m),h=j(c,m),l>h&&(l=h,n[0]=m[0],n[1]=m[1],k=e);return{distance:l,normal:n,index:k}}function e(a,b,e,f){l(a);var g,h,i,k=c(f);for(console.log("winding",k),0>=k&&f.reverse();;){if(g=d(f,k),i=m([0,0],b,e,g.normal),h=j(i,g.normal),h-g.distance<Math.EPS)return a.mtv=g.normal,a.depth=h,!0;f.splice(g.index,0,i)}}var f=a("../vec2.js"),g=f.sub,h=f.cross,i=(f.tripleProduct,f.normalize),j=f.dot,k=a("../polygon.js"),l=a("./response.js").clear,m=k.furthestMinkowski,n=[0,0],o=[0,0],p=[0,0];b.exports=e},{"../polygon.js":25,"../vec2.js":30,"./response.js":11}],8:[function(a,b){function c(a,b,c){var d=j(b)-k(b,a),e=k(b,a)-j(a);return 0>d?l(c,b):e>0?l(c,a):(m(c,b,a),n(c,c))}function d(a){var b,c,d=a.length,e=a[d-2],g=a[d-3];if(p(y,e),m(z,g,y),q(z,r,f))return{a:e.a,b:e.b};if(b=-k(z,y)/j(z),c=1-b,0>=c)return{a:g.a,b:g.b};if(0>=b)return{a:e.a,b:e.b};var h=[0,0],i=[0,0];return s(h,e.a,c),s(A,g.a,b),t(h,h,A),s(i,e.b,c),s(A,g.b,b),t(i,i,A),{a:h,b:i}}function e(a,b){var e,i,s,t,y,z=!1,A=!1,B=!1,C=[],D=1,E=[0,1],F=[0,0],G=[0,0],H=0,I=[];t=x.furthestMinkowski([0,0],a,b,E),D=C.push(t),p(F,t),l(E,E);a:for(;++H;){if(v(F,G),t=x.furthestMinkowski([0,0],a,b,E),D=C.push(t),p(F,t),I.length)for(y=I.length-1;y--;)if(I[y][0]===F[0]&&I[y][1]===F[1])break a;if(q(F,r,f)){z=!0;break}if(!A&&k(F,E)<=0&&(A=!0),2===D)E=c(F,G,E);else if(A){if(u(E,E),t=k(G,E),g(t-k(F,E))<f){B=-t;break}I.push(j(G)<j(C[0])?C.shift():C.splice(1,1)[0]),E=c(C[1],C[0],E)}else if(e=e||[0,0],i=i||[0,0],m(e,G,F),m(i,C[0],F),s=w(e,i)>0,s^w(F,e)>0)I.push(C.shift()),s?n(E,e):o(E,e);else{if(!(s^w(i,F)>0)){z=!0;break}I.push(C.splice(1,1)[0]),s?o(E,i):n(E,i)}if(H>h)return{simplex:C,iterations:H,distance:0,maxIterationsReached:!0}}return t={overlap:z,simplex:C,iterations:H},B!==!1&&(t.distance=B,t.closest=d(C)),t}var f=Math.EPS,g=Math.abs,h=100,i=a("../vec2.js"),j=i.lengthSq,k=i.dot,l=i.negate,m=i.sub,n=i.perp,o=i.rperp,p=i.copy,q=i.near,r=i.ZERO,s=i.scale,t=i.add,u=i.normalize,v=i.swap,w=i.cross,x=a("../polygon.js"),y=[0,0],z=[0,0],A=[0,0];b.exports={getPolygonPolygon:e}},{"../polygon.js":25,"../vec2.js":30}],9:[function(a,b){function c(a,b){var c=i(x,a,b),d=(c+a.length-1)%a.length,e=(c+1)%a.length,f=n(a[d]),g=n(a[e]);l(v,x,g),l(w,x,f);return o(w,b)<=o(v,b)?[f,n(x)]:[n(x),g]}function d(a,b,c,d){var e=o(c,a)-d,f=o(c,b)-d,g=[];if(e>=0&&g.push(a),f>=0&&g.push(b),0>e*f){l(y,b,a);var h=m([0,0],a,p(z,y,e/(e-f)));g.push(h)}return g}function e(a,b,e){var f=c(a,e);q(A,e);var g=c(b,A);l(B,f[1],f[0]),l(C,g[1],g[0]);var h,i,j,m=k(o(B,e)),p=k(o(C,e));p>=m?(h=f,r(D,B),i=g,j=!1):(h=g,r(D,C),i=f,j=!0);var t=o(D,h[0]),u=d(i[0],i[1],D,t);if(u.length<2)return console.log("v.length 1",u.length),null;var v=o(D,h[1]);if(q(E,D),u=d(u[0],u[1],E,-v),u.length<2)return console.log("v.length 2",u.length),null;s(F,D),j&&q(F,F);var w=[],x=o(F,h[0]),y=o(F,u[0])-x,z=o(F,u[1])-x;return y>=0&&w.push({p:n(u[0]),n:n(e),d:-y}),z>=0&&w.push({p:n(u[1]),n:n(e),d:-z}),{cp:w,incidentEdge:i,referenceEdge:h}}function f(a,b){l(G,b[0],a[0]);var c=b[1]+a[1];c*=c;var d=t(G);if(d>c)return!1;var e=j(d);if(0!==e){var f=u([0,0],G,e),g=p([0,0],f*a[1]);return m(g,g,a[0]),{penetration:c-e,position:g,normal:f}}return{position:a[0],penetration:a[1],normal:[1,0]}}var g=a("../vec2.js"),h=a("../polygon.js"),i=h.furthestPoint,j=Math.sqrt,k=Math.abs,l=g.sub,m=g.add,n=g.clone,o=g.dot,p=g.scale,q=g.negate,r=g.normalize,s=g.perp,t=g.lengthSq,u=g.div,v=[0,0],w=[0,0],x=[0,0],y=[0,0],z=[0,0],A=[0,0],B=[0,0],C=[0,0],D=[0,0],E=[0,0],F=[0,0],G=[0,0];b.exports=e,b.exports={EdgeClipping:e,CircleCircle:f,PolygonPolygon:e}},{"../polygon.js":25,"../vec2.js":30}],10:[function(a,b){function c(a,b,c,d){g(q,d,c),0!==q[0]&&(a[0]=q[0],b[0]=0),0!==q[1]&&(a[1]=q[1],b[1]=k(b[1],0))}function d(a,b,c,d,e,g,k,m,n){i(w,e,a);var o=h(w,n);if(o>0)return!1;var p=Math.min(b,g),q=-(1+p)*o;q/=c+k,f.scale(s,n,q),i(v,w,f.scale(v,n,o)),f.normalize(v,v);var x=-h(w,v);x/=c+k;var y=.2,z=.2,A=.2,B=.2,C=l(y*y+z*z);if(j(x)<q*C)f.scale(t,v,x);else{var D=l(A*A+B*B);f.scale(t,v,-x*D)}return f.add(u,s,t),0!==c&&i(a,a,f.scale(r,u,c)),0!==k&&f.add(e,e,f.scale(r,u,k)),!0}function e(a,b,c,d,e,f){var g=m(a[1]-d[1],a[0]-d[0]),h=l(b[0]*b[0]+b[1]*b[1]),i=m(b[1],b[0]),j=l(e[0]*e[0]+e[1]*e[1]),k=m(e[1],e[0]),q=n(i-g),r=n(k-g),s=o(i-g),t=o(k-g),u=n(g),v=o(g),w=c+f,x=c-f,y=f-c,z=h*q*x+2*f*j*r,A=j*r*y+2*c*h*q;b[0]=z/w*u+h*s*n(g+p),b[1]=z/w*v+h*s*o(g+p),e[0]=A/w*u+j*t*n(g+p),e[1]=A/w*v+j*t*o(g+p)}var f=a("../vec2.js"),g=f.scale,h=f.dot,i=f.sub,j=Math.abs,k=Math.max,l=Math.sqrt,m=Math.atan2,n=Math.cos,o=Math.sin,p=Math.HALF_PI,q=[0,0],r=[0,0],s=[0,0],t=[0,0],u=[0,0],v=[0,0],w=[0,0];b.exports={elastic:e,outside:c,linear:d}},{"../vec2.js":30}],11:[function(a,b){function c(){this.normal=[0,0],this.mtv=[0,0]}function d(){return new c}function e(a){return a.aInB=!0,a.bInA=!0,a.depth=Number.MAX_VALUE,a.normal[0]=0,a.normal[1]=0,a.mtv[0]=0,a.mtv[1]=0,a}function f(a,b){h(a,b.mtv,b.depth)}var g=a("../vec2.js"),h=g.scale;c.prototype.a=null,c.prototype.b=null,c.prototype.aInB=!0,c.prototype.bInA=!0,c.prototype.depth=Number.MAX_VALUE,c.prototype.normal=null,c.prototype.mtv=null,b.exports=c,c.create=d,c.clear=e,c.mtv=f},{"../vec2.js":30}],12:[function(a,b){function c(a,b,c){for(var d,e=Number.MAX_VALUE,f=-Number.MAX_VALUE,g=a.length,h=0;g>h;++h)d=p(a[h],b),e>d&&(e=d),d>f&&(f=d);c[0]=e,c[1]=f}function d(a,b,d,e,f,g){q(D,d,b);var h=p(D,g);if(c(e,g,B),c(f,g,C),C[0]+=h,C[1]+=h,B[0]>C[1]||C[0]>B[1])return!0;var i,j,k=0;B[0]<C[0]?(a.aInB=!1,B[1]<C[1]?(k=B[1]-C[0],a.bInA=!1):(i=B[1]-C[0],j=C[1]-B[0],k=j>i?i:-j)):(a.bInA=!1,B[1]>C[1]?(k=B[0]-C[1],a.aInB=!1):(i=B[1]-C[0],j=C[1]-B[0],k=j>i?i:-j));var l=x(k);return l<a.depth&&(a.depth=l,t(a.mtv,g),0>k&&v(a.mtv,a.mtv)),!1}function e(a,b){var c=s(a),d=p(b,a);return 0>d?E:d>c?G:F}function f(a,b){return q(H,a,b[0]),s(H)<=b[1]*b[1]}function g(a,b,c){m.translate(A,z,b),o(a);var d=k(a,A,c);return d&&(d=a.aInB),d}function h(a,b,c){o(a),q(I,c[0],b[0]);var d,e=b[1]+c[1],f=e*e,g=s(I);return g>f?!1:(d=y(g),a.a=b,a.b=c,a.depth=e-d,u(a.mtv,I),a.aInB=b[1]<=c[1]&&d<=c[1]-b[1],a.bInA=c[1]<=b[1]&&d<=b[1]-c[1],!0)}function i(a,b,c,d,f){o(a),q(J,f[0],d);for(var g,h=f[1],i=h*h,j=b.length,k=0;j>k;k++){var l=k===j-1?0:k+1,m=0===k?j-1:k-1,n=0,v=null;t(K,c[k]),q(L,J,b[k]),s(L)>i&&(a.aInB=!1);var y=e(K,L);if(y===E){if(t(K,c[m]),q(M,J,b[m]),y=e(K,M),y===G){if(g=r(L),g>h)return!1;a.bInA=!1,v=[0,0],u(v,L),n=h-g}}else if(y===G){if(t(K,c[l]),q(L,J,b[l]),y=e(K,L),y===E){if(g=r(L),g>h)return!1;a.bInA=!1,v=[0,0],u(v,L),n=h-g}}else{u(N,w(K,K)),g=p(L,N);var z=x(g);if(g>0&&z>h)return!1;v=N,n=h-g,(g>=0||2*h>n)&&(a.bInA=!1)}v&&x(n)<x(a.depth)&&(a.depth=n,t(a.mtv,v))}return a.a=b,a.b=f,!0}function j(a,b,c){o(a);var d=i(a,c,b);if(d){var e=a.a,f=a.aInB;v(a.mtv,a.mtv),a.a=a.b,a.b=e,a.aInB=a.bInA,a.bInA=f}return d}function k(a,b,c,e,f,g,h){o(a);var i,j=b.length,k=f.length;for(i=0;j>i;++i)if(d(a,e,h,b,f,c[i]))return!1;for(i=0;k>i;++i)if(d(a,e,h,b,f,g[i]))return!1;return!0}var l=a("../vec2.js"),m=a("../polygon.js"),n=a("./response.js"),o=n.clear,p=l.dot,q=l.sub,r=l.length,s=l.lengthSq,t=l.copy,u=l.normalize,v=l.negate,w=(l.scale,l.perp),x=Math.abs,y=Math.sqrt,z=[[1,0],[1,1],[0,1],[0,0]],A=[[1,0],[1,1],[0,1],[0,0]],B=[0,0],C=[0,0],D=[0,0],E=-1,F=0,G=1,H=[0,0],I=[0,0],J=[0,0],K=[0,0],L=[0,0],M=[0,0],N=[0,0],O={Response:n,getPointInCircle:f,getPointInPolygon:g,getCircleCircle:h,getPolygonCircle:i,getCirclePolygon:j,getPolygonPolygon:k};b.exports=O},{"../polygon.js":25,"../vec2.js":30,"./response.js":11}],13:[function(a,b){function c(a,b,c,d){return l=a-c,m=b-d,h(l*l+m*m)}function d(a,b,c,d){return l=a-c,m=b-d,l*l+m*m}function e(a,b){var c,d,e,f,g=a[0][0],j=a[0][1],k=a[0][0]+a[1],l=a[0][1]+a[1],m=b[0],n=b[1],o=(g-k)*(m-k)+(j-l)*(n-l),p=(m-k)*(m-k)+(n-l)*(n-l),q=0===p?0:o/p;return q>=0&&1>=q?0:(d=k+q*(m-k),e=l+q*(n-l),f=((l-j)*(m-k)-(k-g)*(n-l))/p,c=i(f)*h(p))}function f(a,b){var d,e,f=b[0]-a[0],g=b[1]-a[1],h=a[2]-a[0],i=a[3]-a[1],j=f*h+g*i,k=h*h+i*i,l=j/k;return 0>l?(d=a[0],e=a[1]):l>1?(d=a[2],e=a[3]):(d=a[0]+l*h,e=a[1]+l*i),c(b[0],b[1],d,e)}function g(a,b){k.normalize(a,a);var c=[a[0][0],a[0][1],a[0][0],a[1][1]],d=[a[0][0],a[0][1],a[1][0],a[0][1]],e=[a[0][0],a[1][1],a[1][0],a[1][1]],g=[a[1][0],a[0][1],a[1][0],a[1][1]];return j(f(c,b),f(d,b),f(e,b),f(g,b))}var h=Math.sqrt,i=Math.abs,j=Math.min,k=a("./rectangle.js"),l=0,m=0,n={fourPoints:c,sqrFourPoints:d,line2_vec2:e,segment2_vec2:f,rectangle_vec2:g,fourPointsSq:d};b.exports=n},{"./rectangle.js":26}],14:[function(a,b){function c(a,b,c){void 0!==c&&(a.strokeStyle=c),a.strokeRect(b[0][0],b[0][1],b[1][0]-b[0][0],b[1][1]-b[0][1])}function d(a,b,c){this.save(),this.transform(1,0,0,-1,0,0),r.call(this,a,b,-c),this.restore()}function e(a,b){b.setTransform(1,0,0,-1,0,a.height),b.fillText=d}function f(a,b,c){a.save(),a.strokeStyle="rgba(0,0,0, 0.25)",a.font="6pt Consolas",b=b||320,c=c||16,a.beginPath(),a.moveTo(-b,0),a.lineTo(b,0),a.stroke(),a.beginPath(),a.moveTo(0,-b),a.lineTo(0,b),a.stroke(),a.setLineDash?a.setLineDash([1,2]):a.strokeStyle="rgba(0,0,0, 0.125)",a.beginPath(),a.moveTo(-b,.5*b),a.lineTo(b,.5*b),a.stroke(),a.beginPath(),a.moveTo(-b,.5*-b),a.lineTo(b,.5*-b),a.stroke(),a.beginPath(),a.moveTo(.5*b,-b),a.lineTo(.5*b,b),a.stroke(),a.beginPath(),a.moveTo(.5*-b,-b),a.lineTo(.5*-b,b),a.stroke(),a.setLineDash([]),a.strokeStyle="rgba(0,0,0, 0.25)";var d,e,f,g=2*b/c,h=c;for(a.textAlign="center",d=0;h>=d;++d)e=-b+d*g,a.beginPath(),a.moveTo(e,4),a.lineTo(e,-4),a.stroke(),0!==e&&a.fillText(e,e,-12);for(a.fillText("(0,0)",0,-12),a.textAlign="left",d=0;h>=d;++d)f=-b+d*g,a.beginPath(),a.moveTo(4,f),a.lineTo(-4,f),a.stroke(),0!==f&&a.fillText(f,12,f-4);a.restore()}function g(a,b,c,d){a.save(),void 0!==c&&(d?a.fillStyle=c:a.strokeStyle=c),a.beginPath(),a.arc(b[0][0],b[0][1],b[1],0,2*Math.PI,!1),a.stroke(),a.beginPath(),a.arc(b[0][0],b[0][1],1,0,2*Math.PI,!1),d?a.fill():a.stroke(),a.restore()}function h(a,b,c,d){a.save(),void 0!==c&&(a.strokeStyle=c),a.beginPath();var e=b[1];d=d||100,a.moveTo(b[0][0]-d*e,b[0][1]-d),a.lineTo(b[0][0]+d*e,b[0][1]+d),a.stroke(),a.restore()}function i(a,b,c,d){a.save(),d=d||2,void 0!==c&&(a.strokeStyle=c),a.beginPath(),a.moveTo(b[0]+d,b[1]+d),a.lineTo(b[0]-d,b[1]-d),a.stroke(),a.beginPath(),a.moveTo(b[0]-d,b[1]+d),a.lineTo(b[0]+d,b[1]-d),a.stroke(),a.restore()}function j(a,b,c,d,e){a.save(),d=d||2,void 0!==e&&(a.strokeStyle=e),a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[0]+c[0]*d,b[1]+c[1]*d),a.stroke(),a.restore()}function k(a,b,c,d,e){a.save(),e=e||10,void 0!==d&&(a.strokeStyle=d),a.beginPath(),a.moveTo(b[0]+2,b[1]+2),a.lineTo(b[0]-2,b[1]-2),a.stroke(),a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[0]+Math.cos(c)*e,b[1]+Math.sin(c)*e),a.stroke(),a.restore()}function l(a,b,c){a.save(),void 0!==c&&(a.strokeStyle=c),a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[2],b[3]),a.stroke(),a.beginPath(),a.arc(b[0],b[1],1,0,2*Math.PI,!1),a.stroke(),a.beginPath(),a.arc(b[2],b[3],1,0,2*Math.PI,!1),a.stroke(),a.restore()}function m(a,b,c,d){a.save(),void 0!==c&&(d?a.fillStyle=c:a.strokeStyle=c),a.beginPath(),a.lineTo(b[1][0],b[1][1]),a.lineTo(b[2][0],b[2][1]),a.lineTo(b[0][0],b[0][1]),a.lineTo(b[1][0],b[1][1]),d?a.fill():a.stroke(),a.restore()}function n(a,b,c,d){a.save(),void 0!==c&&(d?a.fillStyle=c:a.strokeStyle=c),a.strokeRect(b[0],b[1],b[2]-b[0],b[3]-b[1]),a.restore()}function o(a,b,c,d){a.save(),b.length<3&&(d=!1),void 0!==c&&(d?a.fillStyle=c:a.strokeStyle=c),a.beginPath(),a.moveTo(b[0][0],b[0][1]);var e,f;for(e=1,f=b.length;f>e;++e)a.lineTo(b[e][0],b[e][1]);a.lineTo(b[0][0],b[0][1]),d?a.fill():a.stroke(),a.restore()}function p(a,b,c,d){d=d||"10pt Consolas",a.font=d,a.fillText(b,c[0],c[1])}function q(a,b){a.setTransform(b[0],b[1],b[2],b[3],b[4],b[5])}if("undefined"!=typeof CanvasRenderingContext2D){var r=CanvasRenderingContext2D.prototype.fillText;window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(a){window.setTimeout(a,1e3/60)}}()}var s={invertAxis:e,cartesianAxis:f,vec2:i,vec2dir:j,rectangle:c,circle:g,line2:h,triangle:m,angle:k,segment2:l,aabb2:n,polygon:o,applyMatrix23:q,text:p};b.exports=s},{}],15:[function(a,b){function c(a,b){return a>b-O&&b+O>a}function d(a,b,c,d,e,f,g,h,i){var j,k,l;return e>c||b>h||f>d?{reason:Q}:(k=e>a&&c>g,l=f>b&&d>h,k&&l?{reason:S}:i===!1?{reason:T}:(j=b>f&&(k||l)?[[M(a,e),M(b,f)],[N(c,g),N(d,h)],[N(c,g),M(b,f)],[M(a,e),N(d,h)]]:[[N(c,g),M(b,f)],[M(a,e),N(d,h)]],{reason:T,points:j}))}function e(a,b,c,d,e,f){return a>e||e>c||b>f||f>d?{reason:Q}:e>a&&c>e&&f>b&&d>f?{reason:S}:{reason:T,points:[[e,f]]}}function f(a,b,c,d,e,f,g,h){var i,j,k,l,m,n,o=d-a,p=e-b,q=f-a,r=g-b,s=q-o,t=r-p,u=s*s+t*t,v=2*(s*o+t*p),w=o*o+p*p-c*c,x=v*v-4*u*w;return 0>x?{reason:Q}:0===x?h===!1?{reason:V}:(i=-v/(2*u),m=[d+i*s,e+i*t],H(d,e,f,g,m[0],m[1])?{reason:V,points:[m]}:{reason:Q}):x>0?(l=L(x),j=(-v+l)/(2*u),k=(-v-l)/(2*u),n=[],m=[d+j*s,e+j*t],H(d,e,f,g,m[0],m[1])&&n.push(m),m=[d+k*s,e+k*t],H(d,e,f,g,m[0],m[1])&&n.push(m),n.length?{reason:T,points:n}:{reason:Q}):void 0}function g(a,b,c,d,e,g,h,i,j){var k,l=[],m=!1;return k=f(a,b,c,d,e,g,e,i,j),k.reason>=T&&(m=!0,i===!0&&(l.push(k.points[0]),2===k.points.length&&l.push(k.points[1]))),k=f(a,b,c,d,e,d,h,i,j),k.reason>=T&&(m=!0,i===!0&&(l.push(k.points[0]),2===k.points.length&&l.push(k.points[1]))),k=f(a,b,c,d,h,g,h,i,j),k.reason>=T&&(m=!0,i===!0&&(l.push(k.points[0]),2===k.points.length&&l.push(k.points[1]))),k=f(a,b,c,g,e,g,h,i,j),k.reason>=T&&(m=!0,i===!0&&(l.push(k.points[0]),2===k.points.length&&l.push(k.points[1]))),m?l===!1?{reason:T}:{reason:T,points:l}:{reason:Q}}function h(a,b,c,e){return I.normalize(a,a),I.normalize(b,b),b[0]<a[0]?d(b[0],b[1],b[2],b[3],a[0],a[1],a[2],a[3],c===!0,e===!0):d(a[0],a[1],a[2],a[3],b[0],b[1],b[2],b[3],c===!0,e===!0)}function i(a,b,c,d){return e(a[0],a[1],a[2],a[3],b[0],b[1],c===!0,d===!0)}function j(a,b,c,d){return e(b[0],b[1],b[2],b[3],a[0],a[1],c===!0,d===!0)}function k(a,b,c,e){return E.normalize(a,a),E.normalize(b,b),b[0][0]<a[0][0]?d(b[0][0],b[0][1],b[1][0],b[1][1],a[0][0],a[0][1],a[1][0],a[1][1],c===!0,e===!0):d(a[0][0],a[0][1],a[1][0],a[1][1],b[0][0],b[0][1],b[1][0],b[1][1],c===!0,e===!0)}function l(a,b,c,e){return I.normalize(a,a),E.normalize(b,b),a[0]<b[0][0]?d(b[0][0],b[0][1],b[1][0],b[1][1],a[0],a[1],a[2],a[3],c===!0,e===!0):d(a[0],a[1],a[2],a[3],b[0][0],b[0][1],b[1][0],b[1][1],c===!0,e===!0)}function m(a,b,c,d){return l(b,a,c,d)}function n(a,b,c,d){return e(a[0][0],a[0][1],a[1][0],a[1][1],b[0],b[1],c===!0,d===!0)}function o(a,b,c,d){return e(b[0][0],b[0][1],b[1][0],b[1][1],a[0],a[1],c===!0,d===!0)}function p(a,b,d,e){d=d===!0,e=e===!0;var f=J.distance(a[0],b);return c(f,a[1])?{reason:T,points:[b]}:f<a[1]?{reason:S,distance:K(f-a[1])}:{reason:Q,distance:K(f-a[1])}}function q(a,b,c,d){p(b,a,c,d)}function s(a,b,c,d){c=c===!0,d=d===!0;var e,f,g,h,i,j,k,l=a[0],m=b[0],n=a[1],o=b[1],p=n*n,q=o*o,r=n+o,s=J.distanceSq(l,m);return s>r*r?{reason:Q}:(e=n-o,e*e>s?{reason:S}:c===!1?{reason:T}:(j=[],f=L(s),g=(p-q+s)/(2*f),k=p-g*g,h=L(k>0?k:-k),J.lerp(P,l,m,g/f),i=h/f,j.push([P[0]-i*(m[1]-l[1]),P[1]+i*(m[0]-l[0])]),j.push([P[0]+i*(m[1]-l[1]),P[1]-i*(m[0]-l[0])]),{reason:T,points:j}))}function t(a,b,c,d){return g(a[0][0],a[0][1],a[1],b[0],b[1],b[2],b[3],c===!0,d===!0)}function u(a,b,c,d){return g(b[0][0],b[0][1],b[1],a[0],a[1],a[2],a[3],c===!0,d===!0)}function v(a,b,c,d){return g(a[0][0],a[0][1],a[1],b[0][0],b[0][1],b[1][0],b[1][1],c===!0,d===!0)}function w(a,b,c,d){return g(b[0][0],b[0][1],b[1],a[0][0],a[0][1],a[1][0],a[1][1],c===!0,d===!0)}function x(a,b,c,d){return f(a[0][0],a[0][1],a[1],b[0],b[1],b[2],b[3],c===!0,d===!0)}function y(a,b,c,d){return f(b[0][0],b[0][1],b[1],a[0],a[1],a[2],a[3],c===!0,d===!0)}function z(a,b,c,d){c=c===!0,d=d===!0;var e,f,g,h,i,j=[a[0][0],a[0][1]],k=[0,0],l=[b[0][0],b[0][1]],m=[0,0];return J.add(k,j,[a[1],1]),J.add(m,l,[b[1],1]),e=(m[0]-l[0])*(j[1]-l[1])-(m[1]-l[1])*(j[0]-l[0]),f=(k[0]-j[0])*(j[1]-l[1])-(k[1]-j[1])*(j[0]-l[0]),g=(m[1]-l[1])*(k[0]-j[0])-(m[0]-l[0])*(k[1]-j[1]),0!==g?(h=e/g,i=f/g,h>=0&&1>=h&&i>=0&&1>=i?c===!1?{reason:T}:{reason:T,points:[[j[0]+h*(k[0]-j[0]),j[1]+h*(k[1]-j[1])]]}:{reason:Q}):0===e||0===f?{reason:U}:{reason:R}}function A(a,b,c,d){c=c===!0,d=d===!0;var e,f,g,h,i,j,k,l,m,n,o;if(g=(b[3]-b[1])*(a[2]-a[0])-(b[2]-b[0])*(a[3]-a[1]),h=(b[2]-b[0])*(a[1]-b[1])-(b[3]-b[1])*(a[0]-b[0]),i=(a[2]-a[0])*(a[1]-b[1])-(a[3]-a[1])*(a[0]-b[0]),Math.abs(h)<Math.EPS&&Math.abs(i)<Math.EPS&&Math.abs(g)<Math.EPS){if(c===!1)return{reason:T};for(j=[],j.push(B(b,[a[0],a[1]])),j.push(B(b,[a[2],a[3]])),j.push(B(a,[b[0],b[1]])),j.push(B(a,[b[2],b[3]])),l=j.length,m={distance:!1,point:null},n={distance:!1,point:null},k=0;l>k;++k)j[k].reason<=T?(j.splice(k,1),--k,l=j.length):(o=J.lengthSq(j[k].points[0]),(m.distance===!1||m.distance>o)&&(m.distance=o,m.point=j[k].points[0]),(n.distance===!1||m.distance<o)&&(n.distance=o,n.point=j[k].points[0]));return j.length>1?{reason:T,points:[],segments:[[m.point[0],m.point[1],n.point[0],n.point[1]]]}:{reason:U}}return Math.abs(g)<Math.EPS?{reason:R}:(e=h/g,f=i/g,0>e||e>1||0>f||f>1?{reason:Q}:c===!1?{reason:T}:{reason:T,points:[[a[0]+e*(a[2]-a[0]),a[1]+e*(a[3]-a[1])]]})}function B(a,b){var c=F.segment2_vec2(a,b);return 0===c?{reason:T,points:[b]}:{reason:Q,distance:c}}function C(a,b){return B(b,a)}function D(a,b){var c,d,e,f,g=a.length,h=b.length,i=[];for(c=0;g>c;++c)for(d=c+1,d=d==g?0:d,e=0;h>e;++e)f=e+1,f=f==h?0:f,r=A([a[c][0],a[c][1],a[d][0],a[d][1]],[b[e][0],b[e][1],b[f][0],b[f][1]],!0,!0),r.points&&i.push(r.points[0]);return i.length?{reason:T,points:i}:{reason:Q}}var E=a("./rectangle.js"),F=a("./distance.js"),G=a("./segment2.js"),H=G.$inside,I=a("./aabb2.js"),J=a("./vec2.js"),K=Math.abs,L=Math.sqrt,M=Math.max,N=Math.min,O=Math.EPS,P=[0,0],Q=1,R=2,S=4,T=8,U=16,V=32,W={OUTSIDE:Q,PARALLEL:R,COLLIDE:T,INSIDE:S,COINCIDENT:U,TANGENT:V,bb2_bb2:h,bb2_vec2:i,vec2_bb2:j,rectangle_rectangle:k,bb2_rectangle:l,rectangle_bb2:m,rectangle_vec2:n,vec2_rectangle:o,circle_vec2:p,vec2_circle:q,circle_circle:s,circle_bb2:t,bb2_circle:u,circle_rectangle:v,rectangle_circle:w,circle_segment2:x,segment2_circle:y,line2_line2:z,segment2_segment2:A,segment2_vec2:B,vec2_segment2:C,polygon_polygon:D,$rectangle_rectangle:d,$rectangle_vec2:e,$circle_segment2:f,$circle_rectangle:g};b.exports=W},{"./aabb2.js":3,"./distance.js":13,"./rectangle.js":26,"./segment2.js":27,"./vec2.js":30}],16:[function(a,b){function c(a,b,c){return[[a,b],c]}function d(){return[[0,0],0]}function e(a,b){return[[a[0],a[1]],(a[0]-b[0])/(a[0]-b[1])]}function f(a,b,c,d){return[[a,b],(a-c)/(b-d)]}function g(a){return[[a[0],a[1]],(a[0]-a[2])/(a[1]-a[3])]}function h(a,b){return a[0][0]=b[0][0],a[0][1]=b[0][1],a[1]=b[1],a}function i(a){return[[a[0][0],a[0][1]],a[1]]}function j(a,b,c){return a[0][0]=b[0][0]+c[0],a[0][1]=b[0][1]+c[1],a[1]=b[1],a}function k(a,b,c){return a[0][0]=b[0][0]-c[0],a[0][1]=b[0][1]-c[1],a[1]=b[1],a}function l(a,b,c){return a[0][0]=b[0][0]+c,a[0][1]=b[0][1],a[1]=b[1],a}function m(a,b,c){return a[0][0]=b[0][0],a[0][1]=b[0][1],a[1]=p(q(b[1])+c),a}function n(a,b,c){var d=b[1];return mp=1/d,a[1]=(mp*c[0]+c[1]-b[0][1])/(d+mp),a[0]=d*a[1]+b[0][1],a}function o(a,b){var c=a[0];return r(a[1],(b[1]-c[1])/(b[0]-c[0]))}var p=(Math.sqrt,Math.tan),q=Math.atan,r=(Math.sin,Math.cos,Math.near),s={create:c,zero:d,fromVec2:e,from2Points:f,fromSegment2:g,copy:h,clone:i,add:j,subtract:k,offset:l,rotate:m,closetPoint:n,isVec2Inside:o,translate:j,sub:k};b.exports=s},{}],17:[function(){function a(a,b){return a>b-D&&b+D>a}function b(a,b,c){return b>a?b:a>c?c:a}function c(a){return 0>a?0:a>1?1:a}function d(a,b,c){return a*(1-c)+b*c}function e(a,c,d){return a+b(c-a,-d,d)}function f(a,b){return void 0===a?z():(b=b||0,z()*(a-b)+b)}function g(a,b){return b=b||0,B(z()*(a-b+1)+b)}function h(a,b){return B(a/b)*b}function i(a,b){var c=a/b|0,d=a-c*b,e=d>b/2?A:B;return e(a/b)*b}function j(a){return a>t&&n>a?a:(a%=r,t>a?a+=r:a>n&&(a-=r),a)}function k(a,b){return j(a-b)}function l(a){next=pow(2,A(C(a)/y))}function m(a){return 0===(a&a-1)&&0!==a}var b,n,o,p,q,r,s,t,u,v,w,x,y,z=(Math.sqrt,Math.random),A=Math.ceil,B=Math.floor,C=Math.log,D=.01;n=Math.PI,o=Math.QUATER_PI=.25*Math.PI,p=Math.HALF_PI=.5*Math.PI,q=Math.HALF_NPI=-.5*Math.PI,r=Math.TWO_PI=2*Math.PI,s=Math.TWO_HALF_PI=2*Math.PI+Math.HALF_PI,t=Math.NPI=-Math.PI,u=Math.NQUATER_PI=.25*Math.NPI,v=Math.NHALF_PI=.5*Math.NPI,w=Math.NTWO_PI=2*Math.NPI,x=Math.NTWO_HALF_PI=2*Math.NPI+Math.HALF_PI,y=Math.LOG2=C(2),Math.INV_PI=1/Math.PI,Math.RAD_TO_DEG=180/Math.PI,Math.DEG_TO_RAD=Math.PI/180,Math.EPS=D,Math.clamp=b,Math.near=a,Math.clamp01=c,Math.lerp=d,Math.lerpconst=e,Math.randRange=f,Math.randInt=g,Math.snap=h,Math.snapRound=i,Math.deltaRotation=k,Math.normalizeRadians=j,Math.powerOfTwo=l,Math.isPowerOfTwo=m},{}],18:[function(a,b){function c(){return[1,0,0,1,0]}function d(a){a=a||0;var b=o(a),c=p(a);return[b,-c,c,b,a]}function e(a,b,c,d){return[a,b,c,d,q(a)]}function f(){return[0,0,0,0,0]}function g(){return[1,0,0,1,0]}function h(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4],a}function i(a,b,c){var d=c[0],e=c[1],f=b[0],g=b[2],h=b[1],i=b[3],j=1/(f*i-g*h);return a[0]=j*(i*d-g*e),a[1]=j*(f*e-h*d),a}function j(a){return a[0]*a[3]-a[1]*a[2]}function k(a,b){var c=o(b),d=p(b);return a[0]=c,a[1]=-d,a[2]=d,a[3]=c,a}function l(a,b,c){return a[0]=c[0]*b[0]-c[1]*b[3],a[1]=c[0]*b[3]+c[1]*b[0],a}function m(a,b,c){return a[0]=c[0]*b[0]+c[1]*b[3],a[1]=-c[0]*b[3]+c[1]*b[0],a}function n(a,b){var c=b[0],d=b[2],e=b[1],f=b[3],g=1/(c*f-d*e);return a[0]=g*f,a[2]=-g*d,a[1]=-g*e,a[3]=g*c,a}var o=Math.cos,p=Math.sin,q=Math.acos,r={create:c,fromAngle:d,fromNumbers:e,zero:f,identity:g,copy:h,solve:i,determinant:j,setRotation:k,rotate:l,unrotate:m,invert:n};b.exports=r},{}],19:[function(a,b){function c(){return[1,0,0,1,0,0,[1,1,0,0,0],!1]}function d(){}function e(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4],a[5]=b[5],a[6][0]=b[6][0],a[6][1]=b[6][1],a[6][2]=b[6][2],a[6][3]=b[6][3],a[6][4]=b[6][4],a[7]=b[7],a}function f(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=1,a[4]=0,a[5]=0,a[6][0]=1,a[6][1]=1,a[6][2]=0,a[6][3]=0,a[6][4]=0,a[7]=!1,a}function g(a,b,c){return h(a,b,c*R)}function h(a,b,c){return Y=T(c),Z=U(c),_=b[0]*Y+b[2]*Z,ab=b[1]*Y+b[3]*Z,bb=b[0]*-Z+b[2]*Y,cb=b[1]*-Z+b[3]*Y,a[0]=_,a[1]=ab,a[2]=bb,a[3]=cb,a[4]=b[4],a[5]=b[5],a[6][0]=b[6][0],a[6][1]=b[6][1],a[6][2]=b[6][2],a[6][3]=b[6][3],a[6][4]=b[6][4]+c,a[7]=!0,a}function i(a,b,c){return j(a,b,c*R)}function j(a,b,c){return Y=c-a[6][4],h(a,b,Y),a[6][4]=c,a[7]=!0,a}function k(a,b,c){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4]+b[0]*c[0]+b[2]*c[1],a[5]=b[5]+b[1]*c[0]+b[3]*c[1],a[6][0]=b[6][0],a[6][1]=b[6][1],a[6][2]=b[6][2],a[6][3]=b[6][3],a[6][4]=b[6][4],a[7]=!0,a}function l(a,b,c){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=b[4]+c[0],a[5]=b[5]+c[1],a[6][0]=b[6][0],a[6][1]=b[6][1],a[6][2]=b[6][2],a[6][3]=b[6][3],a[6][4]=b[6][4],a[7]=!0,a}function m(a,b,c){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a[4]=c[0],a[5]=c[1],a[6][0]=b[6][0],a[6][1]=b[6][1],a[6][2]=b[6][2],a[6][3]=b[6][3],a[6][4]=b[6][4],a[7]=!0,a}function n(a,b,c){return P=c[0],Q=c[1],a[0]=b[0]*P,a[1]=b[1]*P,a[2]=b[2]*Q,a[3]=b[3]*Q,a[4]=b[4],a[5]=b[5],a[6][0]=b[6][0]*P,a[6][1]=b[6][1]*Q,a[6][2]=b[6][2],a[6][3]=b[6][3],a[6][4]=b[6][4],a[7]=!0,a
}function o(a,b,c){return n(a,b,[c[0]/b[6][0],c[1]/b[6][1]])}function p(a,b,c){return q(a,b,c*R)}function q(a,b,c){return $=V(c),a[0]=b[0],a[1]=b[1],a[2]=b[2]+b[0]*$,a[3]=b[3]+b[1]*$,a[4]=b[4],a[5]=b[5],a[6][0]=b[6][0],a[6][1]=b[6][1],a[6][2]=b[6][2]+c,a[6][3]=b[6][3],a[6][4]=b[6][4],a[7]=!0,a}function r(a,b,c){return s(a,b,c*R)}function s(a,b,c){return $=V(c),a[0]=b[0]+b[2]*$,a[1]=b[1]+b[3]*$,a[2]=b[2],a[3]=b[3],a[4]=b[4],a[5]=b[5],a[6][0]=b[6][0],a[6][1]=b[6][1],a[6][2]=b[6][2],a[6][3]=b[6][3]+$,a[6][4]=b[6][4],a[7]=!0,a}function t(a,b,c){return X[0]=c[0]*R,X[1]=c[1]*R,u(a,b,X)}function u(a,b,c){return Y=V(c[0]),Z=V(c[1]),a[0]=b[0]+b[2]*Z,a[1]=b[1]+b[3]*Z,a[2]=b[2]+b[0]*Y,a[3]=b[3]+b[1]*Y,a[4]=b[4],a[5]=b[5],a[6][0]=b[6][0],a[6][1]=b[6][1],a[6][2]=b[6][2]+c[0],a[6][3]=b[6][3]+c[1],a[6][4]=b[6][4],a[7]=!0,a}function v(a,b,c){return X[0]=c[0]*R,X[1]=c[1]*R,w(a,b,X)}function w(a,b,c){return Y=V(c[0]-b[6][2]),Z=V(c[1]-b[6][3]),a[0]=b[0]+b[2]*Z,a[1]=b[1]+b[3]*Z,a[2]=b[2]+b[0]*Y,a[3]=b[3]+b[1]*Y,a[4]=b[4],a[5]=b[5],a[6][0]=b[6][0],a[6][1]=b[6][1],a[6][2]=c[0],a[6][3]=c[1],a[6][4]=b[6][4],a[7]=!0,a}function x(a,b,c){return _=b[0]*c[0]+b[2]*c[1],ab=b[1]*c[0]+b[3]*c[1],bb=b[0]*c[2]+b[2]*c[3],cb=b[1]*c[2]+b[3]*c[3],db=b[0]*c[4]+b[2]*c[5]+b[4],eb=b[1]*c[4]+b[3]*c[5]+b[5],a[0]=_,a[1]=ab,a[2]=bb,a[3]=cb,a[4]=db,a[5]=eb,a[6][0]=b[6][0],a[6][1]=b[6][1],a[6][2]=b[6][2],a[6][3]=b[6][3],a[6][4]=b[6][4],a[7]=!0,a}function y(a,b,c){return a[0]=c[0]*b[0]+c[0]*b[2]+c[0]*b[4],a[1]=c[1]*b[1]+c[1]*b[3]+c[1]*b[5],a}function z(a,b){return a[0]=b[4],a[1]=b[5],a}function A(a,b){return a[0]=b[6][0],a[1]=b[6][1],a}function B(a,b){return a[0]=b[6][2],a[1]=b[6][3],a}function C(a,b){return h(a,b,S)}function D(){}function E(a){var b=a[1][1]*a[2][2]-a[1][2]*a[2][1],c=a[1][2]*a[2][0]-a[1][0]*a[2][2],d=a[1][0]*a[2][1]-a[1][1]*a[2][0];return a[0][0]*b+a[0][1]*c+a[0][2]*d}function F(a,b){return[1,0,0,1,a,b]}function G(a){return[1,0,V(.017453292519943295*a),1,0,0]}function H(a){return[1,0,V(a),1,0,0]}function I(a){return[1,V(.017453292519943295*a),0,1,0,0]}function J(a){return[1,V(a),0,1,0,0]}function K(a){var b=T(a),c=U(a);return[b,-c,c,b,0,0]}function L(a,b){return[a,0,0,b,0,0]}function M(a,b,c,d){a[0]=b[0]+(c[0]-b[0])*d,a[1]=b[1]+(c[1]-b[1])*d,a[2]=b[2]+(c[2]-b[2])*d,a[3]=b[3]+(c[3]-b[3])*d,a[4]=b[4]+(c[4]-b[4])*d,a[5]=b[5]+(c[5]-b[5])*d;var e=a[6],f=b[6],g=c[6];return e[0]=f[0]+(g[0]-f[0])*d,e[1]=f[1]+(g[1]-f[1])*d,e[2]=f[2]+(g[2]-f[2])*d,e[3]=f[3]+(g[3]-f[3])*d,e[4]=f[4]+(g[4]-f[4])*d,a[7]=b[7],a}function N(a){return W(a[1],a[0])}function O(a,b,c){var d=c[0]*b[0]+c[1]*b[2]+b[4],e=c[0]*b[1]+c[1]*b[3]+b[5];return a[0]=d,a[1]=e,a}var P,Q,R=Math.DEG_TO_RAD,S=Math.PI,T=Math.cos,U=Math.sin,V=Math.tan,W=Math.atan2,X=[0,0],Y=0,Z=0,$=0,_=0,ab=0,bb=0,cb=0,db=0,eb=0,fb={create:c,fromPoints:d,copy:e,identity:f,dRotate:g,rotate:h,dRotation:i,rotation:j,translate:k,gTranslate:l,position:m,scale:n,scalation:o,dSkewX:p,skewX:q,dSkewY:r,skewY:s,dSkew:t,skew:u,dSetSkew:v,setSkew:w,multiply:x,multiplyVec2:y,getPosition:z,getScale:A,getSkew:B,reflect:C,transpose:D,determinant:E,translationMatrix:F,dSkewXMatrix:G,skewXMatrix:H,dSkewYMatrix:I,skewYMatrix:J,scalingMatrix:L,rotationMatrix:K,interpolate:M,transform:O,toAngle:N,dSetRotation:i,setRotation:j,setPosition:m,setScale:o};b.exports=fb},{}],20:[function(a,b){function c(a,b,c,d){this.objects=[],this.bounds=a,this.maxObjects=b||10,this.maxLevels=c||4,this.subdivisions=d||[2,2]}var d=a("./aabb2.js"),e=d.fromAABB2Division,f=d.contains;c.prototype.level=0,c.prototype.maxLevels=4,c.prototype.maxObjects=10,c.prototype.subtrees=null,c.prototype.bounds=null,c.prototype.objects=[],c.prototype.subdivisions=[2,2],c.prototype.divide=function(){var a,b,d,f,g=this.objects,h=e(this.bounds,this.subdivisions[0],this.subdivisions[1]);for(this.subtrees=[],this.objects=[],b=0,d=h.length;d>b;b++)f=new c(h[b]),f.level=this.level+1,this.subtrees.push(f);for(a=0,d=g.length;d>a;a++)this.subinsert(g[a])||this.objects.push(g[a])},c.prototype.subinsert=function(a){if(!this.subtrees)return!1;for(var b=0,c=this.subtrees.length;c>b&&!this.subtrees[b].insert(a.bounds,a.userdata);)++b;return b!==c},c.prototype.insert=function(a,b){if(f(this.bounds,a)){var c={bounds:a,userdata:b};if(!this.subinsert(c)){if(!this.subtrees&&this.objects.length===this.maxObjects&&this.level<this.maxLevels&&(this.divide(),this.subinsert(c)))return!0;this.objects.push(c)}return!0}return!1},c.prototype.retrieve=function(a,b){b=b||[];var c,d,e,f=this.objects;if(f&&f.length)for(c=0,d=f.length;d>c&&!e;c++)f[c].userdata===a&&(e=!0);if(e)return this.iterate(function(a){if(a.objects){var c,d;for(c=0,d=a.objects.length;d>c;++c)b.push(a.objects[c])}}),b;if(this.subtrees)for(c=0,d=this.subtrees.length;d>c;c++)this.subtrees[c].retrieve(a,b);return b},c.prototype.iterate=function(a){var b,c;if(a(this),this.subtrees)for(b=0,c=this.subtrees.length;c>b;++b)this.subtrees[b].iterate(a)},c.prototype.remove=function(a){var b,c,d,e=this.objects;if(e&&e.length)for(b=0,c=e.length;c>b&&!d;b++)if(e[b].userdata===a)return e.splice(b,1),!0;if(this.subtrees)for(b=0,c=this.subtrees.length;c>b;b++)if(this.subtrees[b].remove(a))return!0;return!1},b.exports=c},{"./aabb2.js":3}],21:[function(a,b){function c(a,b,c){return a[0]*b+a[1]*c}function d(a,b,c){return(1-c)*a+c*b}function e(a){return a*a*a*(a*(6*a-15)+10)}function f(a){this.seed(a)}function g(a){this.seed(a)}function h(a){return new f(a)}function i(a){return new g(a)}var j=a("object-enhancements"),k=a("./xorshift.js"),l=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],m=[[0,1,1,1],[0,1,1,-1],[0,1,-1,1],[0,1,-1,-1],[0,-1,1,1],[0,-1,1,-1],[0,-1,-1,1],[0,-1,-1,-1],[1,0,1,1],[1,0,1,-1],[1,0,-1,1],[1,0,-1,-1],[-1,0,1,1],[-1,0,1,-1],[-1,0,-1,1],[-1,0,-1,-1],[1,1,0,1],[1,1,0,-1],[1,-1,0,1],[1,-1,0,-1],[-1,1,0,1],[-1,1,0,-1],[-1,-1,0,1],[-1,-1,0,-1],[1,1,1,0],[1,1,-1,0],[1,-1,1,0],[1,-1,-1,0],[-1,1,1,0],[-1,1,-1,0],[-1,-1,1,0],[-1,-1,-1,0]],n=[[0,1,2,3],[0,1,3,2],[0,0,0,0],[0,2,3,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,3,0],[0,2,1,3],[0,0,0,0],[0,3,1,2],[0,3,2,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,3,2,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,0,3],[0,0,0,0],[1,3,0,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,3,0,1],[2,3,1,0],[1,0,2,3],[1,0,3,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,3,1],[0,0,0,0],[2,1,3,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,1,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,0,1,2],[3,0,2,1],[0,0,0,0],[3,1,2,0],[2,1,0,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,1,0,2],[0,0,0,0],[3,2,0,1],[3,2,1,0]],o=Math.sqrt,p=Math.floor,q=(Math.random,o(3)),r={};f.prototype={_octaves:4,_fallout:.5,seed:function(a){var b,c=k.create(a||(new Date).getTime()).random,d=[],e=[];for(b=0;256>b;b++)d[b]=p(256*c());for(b=0;512>b;b++)e[b]=d[255&b];this._perm=e},octaves:function(a){return arguments.length?this._octaves=a:this._octaves},fallout:function(a){return arguments.length?this._fallout=a:this._fallout},noise:function(a,b){var c,d=0,e=1,f=this._octaves,g=.5,h=this._fallout;for(c=0;f>c;++c)d+=(1+this.noise2d(a*e,b*e))*g*.5,g*=h,e*=2;return d},noise2d:function(a,b){var f=p(a),g=p(b),h=this._perm;a-=f,b-=g,f=255&f,g=255&g;var i=h[f+h[g]]%12,j=h[f+h[g+1]]%12,k=h[f+1+h[g]]%12,m=h[f+1+h[g+1]]%12,n=c(l[i],a,b),o=c(l[k],a-1,b),q=c(l[j],a,b-1),r=c(l[m],a-1,b-1),s=e(a),t=e(b),u=d(n,o,s),v=d(q,r,s),w=d(u,v,t);return w}},g.prototype=j.extend({},f.prototype,{noise:function(a,b){var c,d=0,e=1,f=this._octaves,g=.5,h=this._fallout;for(c=0;f>c;++c)d+=(1+this.noise2d(a*e,b*e))*g*.5,g*=h,e*=2;return d},noise2d:function(a,b){var d,e,f,g,h,i=.5*(q-1),j=(a+b)*i,k=p(a+j),m=p(b+j),n=(3-q)/6,o=(k+m)*n,r=k-o,s=m-o,t=a-r,u=b-s,v=this._perm;t>u?(g=1,h=0):(g=0,h=1);var w=t-g+n,x=u-h+n,y=t-1+2*n,z=u-1+2*n,A=255&k,B=255&m,C=v[A+v[B]]%12,D=v[A+g+v[B+h]]%12,E=v[A+1+v[B+1]]%12,F=.5-t*t-u*u;0>F?d=0:(F*=F,d=F*F*c(l[C],t,u));var G=.5-w*w-x*x;0>G?e=0:(G*=G,e=G*G*c(l[D],w,x));var H=.5-y*y-z*z;return 0>H?f=0:(H*=H,f=H*H*c(l[E],y,z)),70*(d+e+f)}}),r={GRAD3:l,GRAD4:m,SIMPLEX:n,ClassicNoise:f,SimplexNoise:g,createClassic:h,createSimpleX:i},b.exports=r},{"./xorshift.js":31,"object-enhancements":34}],22:[function(a,b){function c(a,b,c){e(a,a,f(g,b,c))}var d=a("../vec2.js"),e=d.add,f=d.scale,g=[0,0];b.exports=c},{"../vec2.js":30}],23:[function(a,b){function c(a,b,c,d,e,f,g,h){var i=a,j=b,k=(d*i+e*j)*c,l=a+j*g,m=b+k*g,n=-(d*l+e*m)*c,o=a+m*g,p=b+n*g,q=(d*o+e*p)*c,r=a+p*f,s=b+q*f,t=(d*r+e*s)*c,u=a+h*(j+2*(m+p)+s),v=b+h*(k+2*(n+q)+t);return[u,v]}b.exports=c},{}],24:[function(a,b){function c(a,b,c,d){return e(g,c,b),f(g,g,.5*d),e(a,a,g)}var d=a("../vec2.js"),e=(d.sub,d.add),f=d.scale,g=[0,0];b.exports=c},{"../vec2.js":30}],25:[function(a,b){function c(){var a,b=arguments.length,c=new Array(b);for(a=0;b>a;++a)c[a]=arguments[a];return c}function d(a){var b,c,d=0,e=a[0][0];for(b=1;b<a.length;b++)c=a[b][0],(c>e||c===e&&a[b][1]<a[d][1])&&(d=b,e=c);var f,g,h,i=a.length,j=[],k=0,l=d,m=[0,0],n=[0,0];do{for(j[k]=l,f=0,g=1;i>g;++g)f!==l?(G(m,a[f],a[j[k]]),G(n,a[g],a[j[k]]),h=E.cross(m,n),0>h&&(f=g),0===h&&N(n)>N(m)&&(f=g)):f=g;++k,l=f}while(f!==d);var o=[];for(b=0;k>b;++b)o.push(a[j[b]]);return o}function e(a){var b=new Array(4);return b[0]=[a[0],a[1]],b[1]=[a[0],a[3]],b[2]=[a[2],a[3]],b[3]=[a[2],a[1]],b}function f(a){var b=new Array(4);return b[0]=[a[0][0],a[0][1]],b[1]=[a[0][0],a[1][1]],b[2]=[a[1][0],a[1][1]],b[3]=[a[1][0],a[0][1]],b}function g(a,b){return R(a,b)}function h(a,b,c){for(var d,e,f=c,g=Math.TWO_PI+c,h=Math.TWO_PI/b,i=[],j=a[0][0],k=a[0][1],l=a[1];g>f;f+=h)d=U(f),e=W(f),i.push([j+d*l,k+e*l]);return i}function i(a,b,c){var d=b.length-1;y=c[0],z=c[1];do B=b[d],A=a[d]=a[d]||[0,0],A[0]=B[0]+y,A[1]=B[1]+z;while(d--);return a}function j(a,b,c){a.length>b.length&&a.splice(b.length);var d=b.length-1;C=U(c),D=W(c);do B=b[d],A=a[d]=a[d]||[0,0],y=B[0],z=B[1],A[0]=y*C-z*D,A[1]=y*D+z*C;while(d--);return a}function k(a,b){a.length>b.length&&a.splice(b.length);for(var c=0,d=b.length,e=d-1;d>c;c++)G(a[c]=a[c]||[0,0],b[e>c?c+1:0],b[c]);return a}function l(a,b){var c=0,d=b.length;for(a.length>b.length&&a.splice(b.length);d>c;c++)a[c]=a[c]||[0,0],O(a[c],b[c]),M(a[c],a[c]);return a}function m(a,b){var c=0,d=b.length;for(S=0,a[0]=0,a[1]=1;d>c;++c)X[0]=b[c][0],X[1]=b[c][1],x=c===d?0:c,Y[0]=b[x][0],Y[0]=b[x][1],T=J(X,Y),S+=T,F(X,X,Y),K(X,X,T),F(a,a,X);return K(a,a,1/(3*S))}function n(a,b){var c=0,d=b.length;a.length>b.length&&a.splice(b.length),m(Z,b);for(var e=Z[0],f=Z[1];d>c;++c)a[c]=a[c]||[0,0],a[c][0]+=e,a[c][1]+=f}function o(a){for(var b=0,c=0,d=a.length;d>c;++c)x=c===d?0:c,b-=a[c][0]*a[x][0]-a[c][1]*a[x][1];return.5*b}function p(a,b,c){var d=0,e=b.length;for(a.length>b.length&&a.splice(b.length);e>d;++d)a[d]=a[d]||[0,0],P.transform(a[d],c,b[d]);return a}function q(a,b){for(var c=0,d=a.length,e=d-1,f=!1;d>c;e=c++)a[c][1]>=b[1]!=a[e][1]>=b[1]&&b[0]<=(a[e][0]-a[c][0])*(b[1]-a[c][1])/(a[e][1]-a[c][1])+a[c][0]&&(f=!f);return f}function r(a,b,c){var d,e,f,g,h=-1/0;for(e=0,f=b.length;f>e;++e)g=E.dot(b[e],c),g>h&&(d=e,h=g);return a[0]=b[d][0],a[1]=b[d][1],d}function s(a,b,c,d){return r(_,b,d),L($,d),r(ab,c,$),G(a,_,ab)}function t(a,b){var c,e,f=a.length,g=b.length,h=f*g,i=new Array(h),j=0;for(c=0;f>c;++c)for(e=0;g>e;++e)i[j++]=[a[c][0]-b[e][0],a[c][1]-b[e][1]];return d(i)}function u(a,b){for(var c,d,e,f,g=0,h=0,i=a.length,j=0,k=i-1;i>j;k=j++)c=a[k],d=a[j],e=V(I(c,d)),f=H(d,d)+H(d,c)+H(c,c),g+=e*f,h+=e;return b/6*(g/h)}function v(a){var b,c,d=a.length,e=1,f=2,g=0;if(3>d)return-1;for(b=0;d>b;++b,++e,++f)if(e%=d,f%=d,c=(a[e][0]-a[b][0])*(a[f][1]-a[e][1])-(a[e][1]-a[b][1])*(a[f][0]-a[e][0]),0>c?g|=1:c>0&&(g|=2),3===g)return!1;return 0!==g?!0:-1}function w(a){var b,c=[],d=a.length;for(b=0;d>b;++b)c.push(E.toString(a[b]));return"{"+c.join(",")+"}"}var x,y,z,A,B,C,D,E=a("./vec2.js"),F=E.add,G=E.sub,H=E.dot,I=E.crossLength,J=E.cross,K=E.scale,L=E.negate,M=E.normalize,N=E.lengthSq,O=E.perp,P=a("./matrix23.js"),Q=a("./beizer.js"),R=Q.getPoints,S=0,T=0,U=(Math.sqrt,Math.cos),V=Math.abs,W=Math.sin,X=(Math.EPS,[0,0]),Y=[0,0],Z=[0,0],$=[0,0],_=[0,0],ab=[0,0],bb={create:c,createConvexHull:d,fromAABB:e,fromRectangle:f,fromBeizer:g,fromCircle:h,translate:i,isConvex:v,rotate:j,centroid:m,recenter:n,area:o,transform:p,normals:l,edges:k,isVec2Inside:q,furthestPoint:r,furthestMinkowski:s,MinkowskiDifference:t,momentOfInertia:u,toString:w};b.exports=bb},{"./beizer.js":4,"./matrix23.js":19,"./vec2.js":30}],26:[function(a,b,c){function d(a,b,c,d){var e=[[a,b],[c,d],!1];return i(e,e),e}function e(a){return d(a[0],a[1],a[2],a[3])}function f(){return[[0,0],[0,0],!0]}function g(a){return[[a[0][0],a[0][1]],[a[1][0],a[1][1]],a[2]]}function h(a,b){return a[0][0]=b[0][0],a[0][1]=b[0][1],a[1][0]=b[1][0],a[1][1]=b[1][1],a[2]=b[2],a}function i(a,b,c){return(c=c||b[2]===!1||!1)?(w=t(b[0][0],b[1][0]),x=s(b[0][0],b[1][0]),a[0][0]=w,a[1][0]=x,w=t(b[0][1],b[1][1]),x=s(b[0][1],b[1][1]),a[0][1]=w,a[1][1]=x,a[2]=!0,a):(h(a,b),a)}function j(a,b){return a[0]=.5*(b[0][0]+b[1][0]),a[1]=.5*(b[0][1]+b[1][1]),a}function k(a,b,c){return a[0][0]=b[0][0]+c[0],a[0][1]=b[0][1]+c[1],a[1][0]=b[1][0]+c[0],a[1][1]=b[1][1]+c[1],a}function l(a,b){return j(u,a),j(v,b),r(v,u)}function m(a){return w=a[0][0]-a[1][0],x=a[0][1]-a[1][1],w*=x,0>w?-w:w}function n(a,b){return a[0][0]<b[0]&&a[1][0]>b[0]&&a[0][1]<b[1]&&a[1][1]>b[1]}function o(a){return 2*(a[1][0]-a[0][0])+2*(a[1][1]-a[0][1])}function p(a,b){var c=a[1][0]-a[0][0],d=a[1][1]-a[0][1];return b*(d*d+c*c)*.08333333333333333}var q="undefined"==typeof c?window.Vec2:a("./vec2.js"),r=q.distance,s=Math.max,t=Math.min,u=[0,0],v=[0,0],w=0,x=0,y={fromBB:e,create:d,zero:f,clone:g,copy:h,normalize:i,center:j,translate:k,distance:l,area:m,isVec2Inside:n,perimeter:o,momentOfInertia:p};b.exports=y},{"./vec2.js":30}],27:[function(a,b){function c(a,b,c,d){return c>a?[a,b,c,d]:[c,d,a,b]}function d(a,b){if(b[0]<b[1])a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3];else{var c=b[0],d=b[1];a[0]=b[2],a[1]=b[3],a[2]=c,a[3]=d}return a}function e(a){return[a[0],a[1],a[2],a[3]]}function f(a,b){return a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3],a}function g(a,b,c){return a[0]=b[0]+c[0],a[1]=b[1]+c[1],a[2]=b[2]+c[0],a[3]=b[3]+c[1],a}function h(a){return y=a[2]-a[0],z=a[3]-a[1],E(y*y+z*z)}function i(a){return y=a[2]-a[0],z=a[3]-a[1],y*y+z*z}function j(a,b){return a[0]=.5*(b[0]+b[2]),a[1]=.5*(b[1]+b[3]),a}function k(a){return(a[0]-a[2])/(a[1]-a[3])}function l(a){return F(a[3]-a[1],a[2]-a[0])}function m(a,b){return(a[0]-b[0])*(a[3]-b[1])-(a[1]-b[1])*(a[2]-b[0])}function n(a,b){return H((a[2]-a[0])*(b[1]-b[1]),(b[0]-a[0])*(a[3]-a[1]))}function o(){throw new Error("todo")}function p(a,b){return n(a,b)&&D(a[0],a[1],b[0],b[1],a[2],a[3])}function q(a,b,c){return C[0]=a[0],C[1]=a[1],l=A.angleTo(b,C),c=c||J.angle(a),c>=0?(x=c,c-=G,cache_seg2_angle_max=x,l>c&&cache_seg2_angle_max>l):(cache_seg2_angle_max=c+G,c>l||l>cache_seg2_angle_max)}function r(a,b){return a[0]=b[2]-b[0],a[1]=b[3]-b[1],B(a,a,-Math.HALF_PI),a}function s(a,b){return a[0]=b[2]-b[0],a[1]=b[3]-b[1],B(a,a,Math.HALF_PI),a}function t(a,b,c){return u(a,b[0],b[1],b[2],b[3],c[0],c[1])}function u(a,b,c,d,e,f,g){return y=d-b,z=e-c,I=((f-b)*y+(g-c)*z)/(y*y+z*z),I>1?I=1:0>I&&(I=0),a[0]=b+I*y,a[1]=c+I*z,a}function v(a,b,c,d,e,f){return H((c-a)*(f-b),(e-a)*(d-b))}function w(a,b,c,d,e,f){return v(a,b,c,d,e,f)&&D(a,b,e,f,c,d)}var x,y,z,A=a("./vec2.js"),B=A.rotate,C=[0,0],D=A.$within,E=Math.sqrt,F=Math.atan2,G=Math.PI,H=Math.near,I=0,J={create:c,clone:e,copy:f,normalize:d,translate:g,length:h,sqrLength:i,midPoint:j,slope:k,angle:l,cross:m,closestPoint:t,isCollinear:n,isParallel:o,isVec2Inside:p,isAbove:q,leftNormal:r,rightNormal:s,lengthSq:i,contains:p,$inside:w,$collinear:v,$closestPoint:u};b.exports=J},{"./vec2.js":30}],28:[function(a,b){function c(a,b,c,d){var e=w(0,0,a,b,c,d,1,1),f=[0,0];return function(a){return y(f,e,a),f[1]}}function d(a,b){var c=x(0,0,a,b,1,1),d=[0,0];return function(a){return y(d,c,a),d[1]}}function e(a,b){return z(a,b&&b[0]||6)}function f(a){return z(2,8*(a-1))}function g(a){return 1-A(B(a))}function h(a){return 1-C(a*D/2)}function i(a,b){return b=b&&b[0]||1.618,z(a,2)*((b+1)*a-b)}function j(a){var b,c,d;for(c=0,d=1;!0;c+=d,d/=2)if(a>=(7-4*c)/11){b=d*d-z((11-6*c-11*a)/4,2);break}return b}function k(a,b){return z(2,10*--a)*C(20*a*D*(b&&b[0]||1)/3)}function l(a){return a}function m(a,b){F[a]=b,F[a+"In"]=b,F[a+"Out"]=function(a){return 1-b(1-a)},F[a+"InOut"]=function(a){return(.5>=a?b(2*a):2-b(2*(1-a)))/2}}function n(a,b,c){a[b]=c}function o(a,b){return parseFloat(a[b],10)}function p(a,b,c){return(b-a)*c+a}function q(a,b){var c,d,e,f,g,h,i=Object.keys(b).sort(function(a,b){return parseFloat(a)-parseFloat(b)}),j=[],k={};for(c=0;c<i.length;++c)j=u.add(j,Object.keys(b[i[c]]));for(j=u.unique(j),d=0;d<j.length;++d){for(e=j[d],k[e]={},c=0;c<i.length;++c)f=i[c],g=parseFloat(i[c]),0===c&&"0%"!==f&&(k[e][0]=a[e]),void 0!==b[f][e]&&(k[e][g]=h=b[f][e]);void 0===k[e][100]&&(k[e][100]=h)}return k}function r(a,b,c,d){if(a.$__tween=a.$__tween||{},"function"!=typeof a.on)throw new Error("obj must be an event-emitter");if("function"!=typeof a.removeListener)throw new Error("obj must be an event-emitter");if("number"!=typeof d.time)throw new Error("options.time is mandatory");var e,f,g={render:d.render||n,parser:d.parser||o,applyFactor:d.applyFactor||p,transition:d.transition||F.linear,link:d.link||G,tickEvent:d.tickEvent||"tick",endEvent:d.endEvent||"animation:end",startEvent:d.startEvent||"animation:start",chainEvent:d.chainEvent||"animation:chain",time:d.time,start:Date.now(),current:0},h=Object.keys(c),i=h.map(function(a){return.01*parseFloat(a)});if(f=function(d){if(!d)throw new Error("trace");g.current+=d;var e,f,j,k,l,m=g.current/g.time,n=!1,o=h.length;for(m>1?(m=1,e=1):e=g.transition(m),f=0;o>f&&!n;++f)j=i[f],e>=j&&(f===o-1?(n=!0,j=i[f-1],k=i[f]):(k=i[f+1],k>e&&(n=!0)),n===!0&&(1===e?(g.render(a,b,c[10