From 6c91bbfdce89dfbd5aff932322baa2c05e6713a9 Mon Sep 17 00:00:00 2001 From: Ricky Reusser Date: Mon, 13 Jul 2020 20:27:52 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- clifford-torus/bundle.js | 1 + clifford-torus/index.html | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 clifford-torus/bundle.js create mode 100644 clifford-torus/index.html diff --git a/clifford-torus/bundle.js b/clifford-torus/bundle.js new file mode 100644 index 00000000..4ea3b0f7 --- /dev/null +++ b/clifford-torus/bundle.js @@ -0,0 +1 @@ +!function(){return function e(t,n,r){function i(o,u){if(!n[o]){if(!t[o]){var f="function"==typeof require&&require;if(!u&&f)return f(o,!0);if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var s=n[o]={exports:{}};t[o][0].call(s.exports,function(e){var n=t[o][1][e];return i(n||e)},s,s.exports,e,t,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o=0;c--)if(s[c]!==l[c])return!1;for(c=s.length-1;c>=0;c--)if(f=s[c],!y(e[f],t[f],n,r))return!1;return!0}(e,t,n,o))}return n?e===t:e==t}function b(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function x(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function w(e,t,n,r){var i;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(r=n,n=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&v(i,n,"Missing expected exception"+r);var o="string"==typeof r,u=!e&&a.isError(i),f=!e&&i&&!n;if((u&&o&&x(i,n)||f)&&v(i,n,"Got unwanted exception"+r),e&&i&&n&&!x(i,n)||!e&&i)throw i}l.AssertionError=function(e){var t;this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=d(m((t=this).actual),128)+" "+t.operator+" "+d(m(t.expected),128),this.generatedMessage=!0);var n=e.stackStartFunction||v;if(Error.captureStackTrace)Error.captureStackTrace(this,n);else{var r=new Error;if(r.stack){var i=r.stack,a=h(n),o=i.indexOf("\n"+a);if(o>=0){var u=i.indexOf("\n",o+1);i=i.substring(u+1)}this.stack=i}}},a.inherits(l.AssertionError,Error),l.fail=v,l.ok=g,l.equal=function(e,t,n){e!=t&&v(e,t,n,"==",l.equal)},l.notEqual=function(e,t,n){e==t&&v(e,t,n,"!=",l.notEqual)},l.deepEqual=function(e,t,n){y(e,t,!1)||v(e,t,n,"deepEqual",l.deepEqual)},l.deepStrictEqual=function(e,t,n){y(e,t,!0)||v(e,t,n,"deepStrictEqual",l.deepStrictEqual)},l.notDeepEqual=function(e,t,n){y(e,t,!1)&&v(e,t,n,"notDeepEqual",l.notDeepEqual)},l.notDeepStrictEqual=function e(t,n,r){y(t,n,!0)&&v(t,n,r,"notDeepStrictEqual",e)},l.strictEqual=function(e,t,n){e!==t&&v(e,t,n,"===",l.strictEqual)},l.notStrictEqual=function(e,t,n){e===t&&v(e,t,n,"!==",l.notStrictEqual)},l.throws=function(e,t,n){w(!0,e,t,n)},l.doesNotThrow=function(e,t,n){w(!1,e,t,n)},l.ifError=function(e){if(e)throw e};var E=Object.keys||function(e){var t=[];for(var n in e)o.call(e,n)&&t.push(n);return t}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"util/":48}],2:[function(e,t,n){"use strict";var r=e("es5-ext/object/assign"),i=e("es5-ext/object/normalize-options"),a=e("es5-ext/object/is-callable"),o=e("es5-ext/string/#/contains");(t.exports=function(e,t){var n,a,u,f,c;return arguments.length<2||"string"!=typeof e?(f=t,t=e,e=null):f=arguments[2],null==e?(n=u=!0,a=!1):(n=o.call(e,"c"),a=o.call(e,"e"),u=o.call(e,"w")),c={value:t,configurable:n,enumerable:a,writable:u},f?r(i(f),c):c}).gs=function(e,t,n){var u,f,c,s;return"string"!=typeof e?(c=n,n=t,t=e,e=null):c=arguments[3],null==t?t=void 0:a(t)?null==n?n=void 0:a(n)||(c=n,n=void 0):(c=t,t=n=void 0),null==e?(u=!0,f=!1):(u=o.call(e,"c"),f=o.call(e,"e")),s={get:t,set:n,configurable:u,enumerable:f},c?r(i(c),s):s}},{"es5-ext/object/assign":4,"es5-ext/object/is-callable":7,"es5-ext/object/normalize-options":12,"es5-ext/string/#/contains":15}],3:[function(e,t,n){"use strict";t.exports=function(){}},{}],4:[function(e,t,n){"use strict";t.exports=e("./is-implemented")()?Object.assign:e("./shim")},{"./is-implemented":5,"./shim":6}],5:[function(e,t,n){"use strict";t.exports=function(){var e,t=Object.assign;return"function"==typeof t&&(t(e={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),e.foo+e.bar+e.trzy==="razdwatrzy")}},{}],6:[function(e,t,n){"use strict";var r=e("../keys"),i=e("../valid-value"),a=Math.max;t.exports=function(e,t){var n,o,u,f=a(arguments.length,2);for(e=Object(i(e)),u=function(r){try{e[r]=t[r]}catch(e){n||(n=e)}},o=1;o-1}},{}],18:[function(e,t,n){"use strict";var r,i,a,o,u,f,c,s=e("d"),l=e("es5-ext/object/valid-callable"),p=Function.prototype.apply,h=Function.prototype.call,d=Object.create,m=Object.defineProperty,v=Object.defineProperties,g=Object.prototype.hasOwnProperty,y={configurable:!0,enumerable:!1,writable:!0};u={on:r=function(e,t){var n;return l(t),g.call(this,"__ee__")?n=this.__ee__:(n=y.value=d(null),m(this,"__ee__",y),y.value=null),n[e]?"object"==typeof n[e]?n[e].push(t):n[e]=[n[e],t]:n[e]=t,this},once:i=function(e,t){var n,i;return l(t),i=this,r.call(this,e,n=function(){a.call(i,e,n),p.call(t,this,arguments)}),n.__eeOnceListener__=t,this},off:a=function(e,t){var n,r,i,a;if(l(t),!g.call(this,"__ee__"))return this;if(!(n=this.__ee__)[e])return this;if("object"==typeof(r=n[e]))for(a=0;i=r[a];++a)i!==t&&i.__eeOnceListener__!==t||(2===r.length?n[e]=r[a?0:1]:r.splice(a,1));else r!==t&&r.__eeOnceListener__!==t||delete n[e];return this},emit:o=function(e){var t,n,r,i,a;if(g.call(this,"__ee__")&&(i=this.__ee__[e]))if("object"==typeof i){for(n=arguments.length,a=new Array(n-1),t=1;t1e-4)return!0;if(Math.abs(n.panX)>1e-4)return!0;if(Math.abs(n.panY)>1e-4)return!0;if(Math.abs(n.panZ)>1e-4)return!0;if(Math.abs(n.dTheta)>1e-4)return!0;if(Math.abs(n.dPhi)>1e-4)return!0;if(Math.abs(n.yaw)>1e-4)return!0;if(Math.abs(n.pitch)>1e-4)return!0}()?F(n):P(n);var p,h,d,m,v=Date.now();null!==b&&(p=v-b,h=n.panDecayTime?Math.exp(-p/n.panDecayTime/Math.LN2):0,d=n.zoomDecayTime?Math.exp(-p/n.zoomDecayTime/Math.LN2):0,m=n.rotationDecayTime?Math.exp(-p/n.rotationDecayTime/Math.LN2):0,n.zoom*=d,n.panX*=h,n.panY*=h,n.panZ*=h,n.dTheta*=m,n.dPhi*=m,n.yaw*=m,n.pitch*=m),b=v,x.state.dirty=t,t=!1,j()},taint:O,resize:C,params:n,rotate:function(e,t){M.dTheta+=e,M.dPhi+=t},pivot:function(e,t){var r=x.params.fovY;M.yaw+=e*r*n.aspectRatio,M.pitch+=t*r},pan:function(e,t){var r=x.params.distance*Math.tan(.5*x.params.fovY)*2;return M.panX+=e*n.aspectRatio*r,M.panY+=t*r,x},zoom:function(e,t,r){return M.zoom+=r,n.mouseX=e,n.mouseY=t,x},state:{}};x.state.projection=new Float32Array(16),x.state.viewInv=new Float32Array(16),x.state.view=new Float32Array(16),x.state.width=null,x.state.height=null,x.state.eye=new Float32Array(3);var w=new Float32Array(3),E=new Float32Array(3),A=new Float32Array(3),k=new Float32Array(3),T=new Float32Array(3),D=new Float32Array(16),_={up:new Float32Array(3),center:new Float32Array(3)};function j(){c(_.up,n.up),c(_.center,n.center),_.near=n.near,_.far=n.far,_.distance=n.distance,_.phi=n.phi,_.theta=n.theta,_.fovY=n.fovY}j();var z={};function S(){x.state.eye[0]=0,x.state.eye[1]=0,x.state.eye[2]=n.distance,a(x.state.eye,x.state.eye,T,-n.phi),i(x.state.eye,x.state.eye,T,n.theta),u(x.state.eye,x.state.eye,n.center),m(x.state.view,x.state.eye,n.center,n.up),v(x.state.projection,n.fovY,x.params.aspectRatio,n.near,n.far),p(x.state.viewInv,x.state.view)}function O(){t=!0}function C(e){x.params.aspectRatio=e,S(),O()}function F(e){e.zoom=0,e.dTheta=0,e.dPhi=0,e.panX=0,e.panY=0,e.panZ=0,e.yaw=0,e.pitch=0}var M={};function P(e){var t;l(D),n.zoomAboutCursor&&(t=n.distance*Math.tan(.5*n.fovY),w[0]=e.mouseX*n.aspectRatio*t,w[1]=e.mouseY*t,w[2]=0,h(D,D,w)),w[0]=1+e.zoom,w[1]=1+e.zoom,w[2]=1,d(D,D,w),n.zoomAboutCursor&&(t=n.distance*Math.tan(.5*n.fovY),w[0]=-e.mouseX*n.aspectRatio*t,w[1]=-e.mouseY*t,w[2]=0,h(D,D,w)),D[12]-=.5*e.panX,D[13]-=.5*e.panY,r(n.center,n.center,x.state.view),r(n.center,n.center,D),r(n.center,n.center,x.state.viewInv),n.rotateAboutCenter&&c(n.rotationCenter,n.center),n.distance*=1+e.zoom;var o=n.phi;n.phi+=e.dPhi,n.phi=Math.min(g,Math.max(y,n.phi));var u=n.phi-o,p=n.theta;n.theta+=e.dTheta;var m=n.theta-p;if(i(n.center,n.center,n.rotationCenter,m-n.theta),a(n.center,n.center,n.rotationCenter,-u),i(n.center,n.center,n.rotationCenter,n.theta),0!==e.yaw||0!==e.pitch){A[0]=x.state.view[0],A[1]=x.state.view[4],A[2]=x.state.view[8],s(A,A),E[0]=x.state.view[1],E[1]=x.state.view[5],E[2]=x.state.view[9],s(E,E),k[0]=x.state.view[2],k[1]=x.state.view[6],k[2]=x.state.view[10],s(k,k);var v=Math.min(g,Math.max(y,n.phi+.5*e.pitch)),b=v-n.phi;f(n.center,n.center,A,-Math.sin(.5*e.yaw)*n.distance),f(n.center,n.center,E,-Math.sin(b)*n.distance),f(n.center,n.center,k,(2-Math.cos(.5*e.yaw)-Math.cos(b))*n.distance),n.phi=v,n.theta+=.5*e.yaw}S(),O()}return F(M),C(x.params.aspectRatio),x}},{"gl-mat4/identity":25,"gl-mat4/invert":26,"gl-mat4/lookAt":27,"gl-mat4/perspective":28,"gl-mat4/scale":29,"gl-mat4/translate":30,"gl-vec3/add":31,"gl-vec3/copy":32,"gl-vec3/equals":34,"gl-vec3/normalize":35,"gl-vec3/rotateX":36,"gl-vec3/rotateY":37,"gl-vec3/scaleAndAdd":38,"gl-vec3/transformMat4":39}],25:[function(e,t,n){arguments[4][20][0].apply(n,arguments)},{dup:20}],26:[function(e,t,n){t.exports=function(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],o=t[4],u=t[5],f=t[6],c=t[7],s=t[8],l=t[9],p=t[10],h=t[11],d=t[12],m=t[13],v=t[14],g=t[15],y=n*u-r*o,b=n*f-i*o,x=n*c-a*o,w=r*f-i*u,E=r*c-a*u,A=i*c-a*f,k=s*m-l*d,T=s*v-p*d,D=s*g-h*d,_=l*v-p*m,j=l*g-h*m,z=p*g-h*v,S=y*z-b*j+x*_+w*D-E*T+A*k;if(!S)return null;return S=1/S,e[0]=(u*z-f*j+c*_)*S,e[1]=(i*j-r*z-a*_)*S,e[2]=(m*A-v*E+g*w)*S,e[3]=(p*E-l*A-h*w)*S,e[4]=(f*D-o*z-c*T)*S,e[5]=(n*z-i*D+a*T)*S,e[6]=(v*x-d*A-g*b)*S,e[7]=(s*A-p*x+h*b)*S,e[8]=(o*j-u*D+c*k)*S,e[9]=(r*D-n*j-a*k)*S,e[10]=(d*E-m*x+g*y)*S,e[11]=(l*x-s*E-h*y)*S,e[12]=(u*T-o*_-f*k)*S,e[13]=(n*_-r*T+i*k)*S,e[14]=(m*b-d*w-v*y)*S,e[15]=(s*w-l*b+p*y)*S,e}},{}],27:[function(e,t,n){arguments[4][21][0].apply(n,arguments)},{"./identity":25,dup:21}],28:[function(e,t,n){t.exports=function(e,t,n,r,i){var a=1/Math.tan(t/2),o=1/(r-i);return e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(i+r)*o,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*i*r*o,e[15]=0,e}},{}],29:[function(e,t,n){t.exports=function(e,t,n){var r=n[0],i=n[1],a=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}},{}],30:[function(e,t,n){t.exports=function(e,t,n){var r,i,a,o,u,f,c,s,l,p,h,d,m=n[0],v=n[1],g=n[2];t===e?(e[12]=t[0]*m+t[4]*v+t[8]*g+t[12],e[13]=t[1]*m+t[5]*v+t[9]*g+t[13],e[14]=t[2]*m+t[6]*v+t[10]*g+t[14],e[15]=t[3]*m+t[7]*v+t[11]*g+t[15]):(r=t[0],i=t[1],a=t[2],o=t[3],u=t[4],f=t[5],c=t[6],s=t[7],l=t[8],p=t[9],h=t[10],d=t[11],e[0]=r,e[1]=i,e[2]=a,e[3]=o,e[4]=u,e[5]=f,e[6]=c,e[7]=s,e[8]=l,e[9]=p,e[10]=h,e[11]=d,e[12]=r*m+u*v+l*g+t[12],e[13]=i*m+f*v+p*g+t[13],e[14]=a*m+c*v+h*g+t[14],e[15]=o*m+s*v+d*g+t[15]);return e}},{}],31:[function(e,t,n){t.exports=function(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}},{}],32:[function(e,t,n){t.exports=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},{}],33:[function(e,t,n){t.exports=1e-6},{}],34:[function(e,t,n){t.exports=function(e,t){var n=e[0],i=e[1],a=e[2],o=t[0],u=t[1],f=t[2];return Math.abs(n-o)<=r*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(i-u)<=r*Math.max(1,Math.abs(i),Math.abs(u))&&Math.abs(a-f)<=r*Math.max(1,Math.abs(a),Math.abs(f))};var r=e("./epsilon")},{"./epsilon":33}],35:[function(e,t,n){t.exports=function(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;a>0&&(a=1/Math.sqrt(a),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a);return e}},{}],36:[function(e,t,n){t.exports=function(e,t,n,r){var i=n[1],a=n[2],o=t[1]-i,u=t[2]-a,f=Math.sin(r),c=Math.cos(r);return e[0]=t[0],e[1]=i+o*c-u*f,e[2]=a+o*f+u*c,e}},{}],37:[function(e,t,n){t.exports=function(e,t,n,r){var i=n[0],a=n[2],o=t[0]-i,u=t[2]-a,f=Math.sin(r),c=Math.cos(r);return e[0]=i+u*f+o*c,e[1]=t[1],e[2]=a+u*c-o*f,e}},{}],38:[function(e,t,n){t.exports=function(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}},{}],39:[function(e,t,n){arguments[4][23][0].apply(n,arguments)},{dup:23}],40:[function(e,t,n){"use strict";t.exports=function(e,t){t||(t=e,e=window);var n=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},u=!1;function f(e){var t=!1;return"altKey"in e&&(t=t||e.altKey!==o.alt,o.alt=!!e.altKey),"shiftKey"in e&&(t=t||e.shiftKey!==o.shift,o.shift=!!e.shiftKey),"ctrlKey"in e&&(t=t||e.ctrlKey!==o.control,o.control=!!e.ctrlKey),"metaKey"in e&&(t=t||e.metaKey!==o.meta,o.meta=!!e.metaKey),t}function c(e,u){var c=r.x(u),s=r.y(u);"buttons"in u&&(e=0|u.buttons),(e!==n||c!==i||s!==a||f(u))&&(n=0|e,i=c||0,a=s||0,t&&t(n,i,a,o))}function s(e){c(0,e)}function l(){(n||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,n=0,o.shift=o.alt=o.control=o.meta=!1,t&&t(0,0,0,o))}function p(e){f(e)&&t&&t(n,i,a,o)}function h(e){0===r.buttons(e)?c(0,e):c(n,e)}function d(e){c(n|r.buttons(e),e)}function m(e){c(n&~r.buttons(e),e)}function v(){u||(u=!0,e.addEventListener("mousemove",h),e.addEventListener("mousedown",d),e.addEventListener("mouseup",m),e.addEventListener("mouseleave",s),e.addEventListener("mouseenter",s),e.addEventListener("mouseout",s),e.addEventListener("mouseover",s),e.addEventListener("blur",l),e.addEventListener("keyup",p),e.addEventListener("keydown",p),e.addEventListener("keypress",p),e!==window&&(window.addEventListener("blur",l),window.addEventListener("keyup",p),window.addEventListener("keydown",p),window.addEventListener("keypress",p)))}v();var g={element:e};return Object.defineProperties(g,{enabled:{get:function(){return u},set:function(t){t?v():u&&(u=!1,e.removeEventListener("mousemove",h),e.removeEventListener("mousedown",d),e.removeEventListener("mouseup",m),e.removeEventListener("mouseleave",s),e.removeEventListener("mouseenter",s),e.removeEventListener("mouseout",s),e.removeEventListener("mouseover",s),e.removeEventListener("blur",l),e.removeEventListener("keyup",p),e.removeEventListener("keydown",p),e.removeEventListener("keypress",p),e!==window&&(window.removeEventListener("blur",l),window.removeEventListener("keyup",p),window.removeEventListener("keydown",p),window.removeEventListener("keypress",p)))},enumerable:!0},buttons:{get:function(){return n},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),g};var r=e("mouse-event")},{"mouse-event":42}],41:[function(e,t,n){var r={left:0,top:0};t.exports=function(e,t,n){t=t||e.currentTarget||e.srcElement,Array.isArray(n)||(n=[0,0]);var i=e.clientX||0,a=e.clientY||0,o=(u=t,u===window||u===document||u===document.body?r:u.getBoundingClientRect());var u;return n[0]=i-o.left,n[1]=a-o.top,n}},{}],42:[function(e,t,n){"use strict";function r(e){return e.target||e.srcElement||window}n.buttons=function(e){if("object"==typeof e){if("buttons"in e)return e.buttons;if("which"in e){if(2===(t=e.which))return 4;if(3===t)return 2;if(t>0)return 1<=0)return 1<0){if(d.theta=0,E>1){var A=p[1].position[0]-p[0].position[0],k=(p[0].position[1]-p[1].position[1])*t/n;d.theta=Math.atan2(k,A)}m(),d.buttons=0,d.mods={},d.active=h,x=y,w=b,d.x0=2*x/t-1,d.y0=1-2*w/n,d.x=2*y/t-1,d.y=1-2*b/n,d.x1=2*p[0].position[0]/t-1,d.y1=1-2*p[0].position[1]/n,h>1&&(d.x2=2*p[1].position[0]/t-1,d.y2=1-2*p[1].position[1]/n),d.active=h,d.dx=0,d.dy=0,d.dz=0,d.zoomx=1,d.zoomy=1,d.dtheta=0,d.originalEvent=r,f.emit(1===h?"touchstart":"pinchstart",d)}}function j(r){for(var a,o=!1,u=0;u1)for(var n=1;n>>=t))<<3,(t|=n=(15<(e>>>=n))<<2)|(n=(3<(e>>>=n))<<1)|e>>>n>>1}function u(){function e(e){e:{for(var t=16;268435456>=t;t*=16)if(e<=t){e=t;break e}e=0}return 0<(t=n[o(e)>>2]).length?t.pop():new ArrayBuffer(e)}function t(e){n[o(e.byteLength)>>2].push(e)}var n=a(8,function(){return[]});return{alloc:e,free:t,allocType:function(t,n){var r=null;switch(t){case 5120:r=new Int8Array(e(n),0,n);break;case 5121:r=new Uint8Array(e(n),0,n);break;case 5122:r=new Int16Array(e(2*n),0,n);break;case 5123:r=new Uint16Array(e(2*n),0,n);break;case 5124:r=new Int32Array(e(4*n),0,n);break;case 5125:r=new Uint32Array(e(4*n),0,n);break;case 5126:r=new Float32Array(e(4*n),0,n);break;default:return null}return r.length!==n?r.subarray(0,n):r},freeType:function(e){t(e.buffer)}}}function f(e){return!!e&&"object"==typeof e&&Array.isArray(e.shape)&&Array.isArray(e.stride)&&"number"==typeof e.offset&&e.shape.length===e.stride.length&&(Array.isArray(e.data)||X(e.data))}function c(e,t,n,r,i,a){for(var o=0;o(i=u)&&(i=r.buffer.byteLength,5123===l?i>>=1:5125===l&&(i>>=2)),r.vertCount=i,i=o,0>o&&(i=4,1===(o=r.buffer.dimension)&&(i=0),2===o&&(i=1),3===o&&(i=4)),r.primType=i}function o(e){r.elementsCount--,delete u[e.id],e.buffer.destroy(),e.buffer=null}var u={},c=0,s={uint8:5121,uint16:5123};t.oes_element_index_uint&&(s.uint32=5125),i.prototype.bind=function(){this.buffer.bind()};var l=[];return{create:function(e,t){function u(e){if(e)if("number"==typeof e)c(e),l.primType=4,l.vertCount=0|e,l.type=5121;else{var t=null,n=35044,r=-1,i=-1,o=0,p=0;Array.isArray(e)||X(e)||f(e)?t=e:("data"in e&&(t=e.data),"usage"in e&&(n=J[e.usage]),"primitive"in e&&(r=ne[e.primitive]),"count"in e&&(i=0|e.count),"type"in e&&(p=s[e.type]),"length"in e?o=0|e.length:(o=i,5123===p||5122===p?o*=2:5125!==p&&5124!==p||(o*=4))),a(l,t,n,r,i,o,p)}else c(),l.primType=4,l.vertCount=0,l.type=5121;return u}var c=n.create(null,34963,!0),l=new i(c._buffer);return r.elementsCount++,u(e),u._reglType="elements",u._elements=l,u.subdata=function(e,t){return c.subdata(e,t),u},u.destroy=function(){o(l)},u},createStream:function(e){var t=l.pop();return t||(t=new i(n.create(null,34963,!0,!1)._buffer)),a(t,e,35040,-1,-1,0,0),t},destroyStream:function(e){l.push(e)},getElements:function(e){return"function"==typeof e&&e._elements instanceof i?e._elements:null},clear:function(){G(u).forEach(o)}}}function m(e){for(var t=V.allocType(5123,e.length),n=0;n>>31<<15,i=(a<<1>>>24)-127,a=a>>13&1023;t[n]=-24>i?r:-14>i?r+(a+1024>>-14-i):15>=i,n.height>>=i,h(n,r[i]),e.mipmask|=1<t;++t)e.images[t]=null;return e}function z(e){for(var t=e.images,n=0;nt){for(var n=0;n=--this.refCount&&L(this)}}),o.profile&&(a.getTotalTextureSize=function(){var e=0;return Object.keys(ve).forEach(function(t){e+=ve[t].stats.size}),e}),{create2D:function(t,n){function r(e,t){var n=i.texInfo;S.call(n);var a=j();return"number"==typeof e?T(a,0|e,"number"==typeof t?0|t:0|e):e?(O(n,e),D(a,e)):T(a,1,1),n.genMipmaps&&(a.mipmask=(a.width<<1)-1),i.mipmask=a.mipmask,c(i,a),i.internalformat=a.internalformat,r.width=a.width,r.height=a.height,M(i),_(a,3553),C(n,3553),P(),z(a),o.profile&&(i.stats.size=A(i.internalformat,i.type,a.width,a.height,n.genMipmaps,!1)),r.format=$[i.internalformat],r.type=ee[i.type],r.mag=te[n.magFilter],r.min=ne[n.minFilter],r.wrapS=re[n.wrapS],r.wrapT=re[n.wrapT],r}var i=new F(3553);return ve[i.id]=i,a.textureCount++,r(t,n),r.subimage=function(e,t,n,a){t|=0,n|=0,a|=0;var o=g();return c(o,i),o.width=0,o.height=0,h(o,e),o.width=o.width||(i.width>>a)-t,o.height=o.height||(i.height>>a)-n,M(i),d(o,3553,t,n,a),P(),k(o),r},r.resize=function(t,n){var a=0|t,u=0|n||a;if(a===i.width&&u===i.height)return r;r.width=i.width=a,r.height=i.height=u,M(i);for(var f,c=i.channels,s=i.type,l=0;i.mipmask>>l;++l){var p=a>>l,h=u>>l;if(!p||!h)break;f=V.zero.allocType(s,p*h*c),e.texImage2D(3553,l,i.format,p,h,0,i.format,i.type,f),f&&V.zero.freeType(f)}return P(),o.profile&&(i.stats.size=A(i.internalformat,i.type,a,u,!1,!1)),r},r._reglType="texture2d",r._texture=i,o.profile&&(r.stats=i.stats),r.destroy=function(){i.decRef()},r},createCube:function(t,n,r,i,u,f){function l(e,t,n,r,i,a){var u,f=p.texInfo;for(S.call(f),u=0;6>u;++u)m[u]=j();if("number"!=typeof e&&e){if("object"==typeof e)if(t)D(m[0],e),D(m[1],t),D(m[2],n),D(m[3],r),D(m[4],i),D(m[5],a);else if(O(f,e),s(p,e),"faces"in e)for(e=e.faces,u=0;6>u;++u)c(m[u],p),D(m[u],e[u]);else for(u=0;6>u;++u)D(m[u],e)}else for(e=0|e||1,u=0;6>u;++u)T(m[u],e,e);for(c(p,m[0]),p.mipmask=f.genMipmaps?(m[0].width<<1)-1:m[0].mipmask,p.internalformat=m[0].internalformat,l.width=m[0].width,l.height=m[0].height,M(p),u=0;6>u;++u)_(m[u],34069+u);for(C(f,34067),P(),o.profile&&(p.stats.size=A(p.internalformat,p.type,l.width,l.height,f.genMipmaps,!0)),l.format=$[p.internalformat],l.type=ee[p.type],l.mag=te[f.magFilter],l.min=ne[f.minFilter],l.wrapS=re[f.wrapS],l.wrapT=re[f.wrapT],u=0;6>u;++u)z(m[u]);return l}var p=new F(34067);ve[p.id]=p,a.cubeCount++;var m=Array(6);return l(t,n,r,i,u,f),l.subimage=function(e,t,n,r,i){n|=0,r|=0,i|=0;var a=g();return c(a,p),a.width=0,a.height=0,h(a,t),a.width=a.width||(p.width>>i)-n,a.height=a.height||(p.height>>i)-r,M(p),d(a,34069+e,n,r,i),P(),k(a),l},l.resize=function(t){if((t|=0)!==p.width){l.width=p.width=t,l.height=p.height=t,M(p);for(var n=0;6>n;++n)for(var r=0;p.mipmask>>r;++r)e.texImage2D(34069+n,r,p.format,t>>r,t>>r,0,p.format,p.type,null);return P(),o.profile&&(p.stats.size=A(p.internalformat,p.type,l.width,l.height,!1,!0)),l}},l._reglType="textureCube",l._texture=p,o.profile&&(l.stats=p.stats),l.destroy=function(){p.decRef()},l},clear:function(){for(var t=0;tn;++n)if(0!=(t.mipmask&1<>n,t.height>>n,0,t.internalformat,t.type,null);else for(var r=0;6>r;++r)e.texImage2D(34069+r,n,t.internalformat,t.width>>n,t.height>>n,0,t.internalformat,t.type,null);C(t.texInfo,t.target)})}}}function T(e,t,n,r,i,a){function o(e,t,n){this.target=e,this.texture=t,this.renderbuffer=n;var r=e=0;t?(e=t.width,r=t.height):n&&(e=n.width,r=n.height),this.width=e,this.height=r}function u(e){e&&(e.texture&&e.texture._texture.decRef(),e.renderbuffer&&e.renderbuffer._renderbuffer.decRef())}function f(e,t,n){e&&(e.texture?e.texture._texture.refCount+=1:e.renderbuffer._renderbuffer.refCount+=1)}function c(t,n){n&&(n.texture?e.framebufferTexture2D(36160,t,n.target,n.texture._texture.texture,0):e.framebufferRenderbuffer(36160,t,36161,n.renderbuffer._renderbuffer.renderbuffer))}function s(e){var t=3553,n=null,r=null,i=e;return"object"==typeof e&&(i=e.data,"target"in e&&(t=0|e.target)),"texture2d"===(e=i._reglType)?n=i:"textureCube"===e?n=i:"renderbuffer"===e&&(r=i,t=36161),new o(t,n,r)}function l(e,t,n,a,u){return n?((e=r.create2D({width:e,height:t,format:a,type:u}))._texture.refCount=0,new o(3553,e,null)):((e=i.create({width:e,height:t,format:a}))._renderbuffer.refCount=0,new o(36161,null,e))}function p(e){return e&&(e.texture||e.renderbuffer)}function h(e,t,n){e&&(e.texture?e.texture.resize(t,n):e.renderbuffer&&e.renderbuffer.resize(t,n))}function d(){this.id=A++,k[this.id]=this,this.framebuffer=e.createFramebuffer(),this.height=this.width=0,this.colorAttachments=[],this.depthStencilAttachment=this.stencilAttachment=this.depthAttachment=null}function m(e){e.colorAttachments.forEach(u),u(e.depthAttachment),u(e.stencilAttachment),u(e.depthStencilAttachment)}function v(t){e.deleteFramebuffer(t.framebuffer),t.framebuffer=null,a.framebufferCount--,delete k[t.id]}function g(t){var r;e.bindFramebuffer(36160,t.framebuffer);var i=t.colorAttachments;for(r=0;ri;++i){for(c=0;ce;++e)n[e].resize(r);return t.width=t.height=r,t},_reglType:"framebufferCube",destroy:function(){n.forEach(function(e){e.destroy()})}})},clear:function(){G(k).forEach(v)},restore:function(){G(k).forEach(function(t){t.framebuffer=e.createFramebuffer(),g(t)})}})}function D(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function _(e,t,n,r){function i(e,t,n,r){this.name=e,this.id=t,this.location=n,this.info=r}function a(e,t){for(var n=0;ne&&(e=t.stats.uniformsCount)}),e},n.getMaxAttributesCount=function(){var e=0;return p.forEach(function(t){t.stats.attributesCount>e&&(e=t.stats.attributesCount)}),e}),{clear:function(){var t=e.deleteShader.bind(e);G(c).forEach(t),c={},G(s).forEach(t),s={},p.forEach(function(t){e.deleteProgram(t.program)}),p.length=0,l={},n.shaderCount=0},program:function(e,t,r){var i=l[t];i||(i=l[t]={});var a=i[e];return a||(a=new u(t,e),n.shaderCount++,f(a),i[e]=a,p.push(a)),a},restore:function(){c={},s={};for(var e=0;e"+t+"?"+i+".constant["+t+"]:0;"}).join(""),"}}else{","if(",o,"(",i,".buffer)){",s,"=",u,".createStream(",34962,",",i,".buffer);","}else{",s,"=",u,".getBuffer(",i,".buffer);","}",l,'="type" in ',i,"?",a.glTypes,"[",i,".type]:",s,".dtype;",f.normalized,"=!!",i,".normalized;"),r("size"),r("offset"),r("stride"),r("divisor"),n("}}"),n.exit("if(",f.isStream,"){",u,".destroyStream(",s,");","}"),f})}),o}function T(e,t,n,r,i){var o=w(e),u=function(e,t,n){function r(e){if(e in i){var n=i[e];e=!0;var r,o,u=0|n.x,f=0|n.y;return"width"in n?r=0|n.width:e=!1,"height"in n?o=0|n.height:e=!1,new M(!e&&t&&t.thisDep,!e&&t&&t.contextDep,!e&&t&&t.propDep,function(e,t){var i=e.shared.context,a=r;"width"in n||(a=t.def(i,".","framebufferWidth","-",u));var c=o;return"height"in n||(c=t.def(i,".","framebufferHeight","-",f)),[u,f,a,c]})}if(e in a){var c=a[e];return e=B(c,function(e,t){var n=e.invoke(t,c),r=e.shared.context,i=t.def(n,".x|0"),a=t.def(n,".y|0");return[i,a,t.def('"width" in ',n,"?",n,".width|0:","(",r,".","framebufferWidth","-",i,")"),n=t.def('"height" in ',n,"?",n,".height|0:","(",r,".","framebufferHeight","-",a,")")]}),t&&(e.thisDep=e.thisDep||t.thisDep,e.contextDep=e.contextDep||t.contextDep,e.propDep=e.propDep||t.propDep),e}return t?new M(t.thisDep,t.contextDep,t.propDep,function(e,t){var n=e.shared.context;return[0,0,t.def(n,".","framebufferWidth"),t.def(n,".","framebufferHeight")]}):null}var i=e.static,a=e.dynamic;if(e=r("viewport")){var o=e;e=new M(e.thisDep,e.contextDep,e.propDep,function(e,t){var n=o.append(e,t),r=e.shared.context;return t.set(r,".viewportWidth",n[2]),t.set(r,".viewportHeight",n[3]),n})}return{viewport:e,scissor_box:r("scissor.box")}}(e,o),f=A(e),c=function(e,t){var n=e.static,r=e.dynamic,i={};return re.forEach(function(e){function t(t,a){if(e in n){var u=t(n[e]);i[o]=L(function(){return u})}else if(e in r){var f=r[e];i[o]=B(f,function(e,t){return a(e,t,e.invoke(t,f))})}}var o=g(e);switch(e){case"cull.enable":case"blend.enable":case"dither":case"stencil.enable":case"depth.enable":case"scissor.enable":case"polygonOffset.enable":case"sample.alpha":case"sample.enable":case"depth.mask":return t(function(e){return e},function(e,t,n){return n});case"depth.func":return t(function(e){return Ae[e]},function(e,t,n){return t.def(e.constants.compareFuncs,"[",n,"]")});case"depth.range":return t(function(e){return e},function(e,t,n){return[t.def("+",n,"[0]"),t=t.def("+",n,"[1]")]});case"blend.func":return t(function(e){return[Ee["srcRGB"in e?e.srcRGB:e.src],Ee["dstRGB"in e?e.dstRGB:e.dst],Ee["srcAlpha"in e?e.srcAlpha:e.src],Ee["dstAlpha"in e?e.dstAlpha:e.dst]]},function(e,t,n){function r(e,r){return t.def('"',e,r,'" in ',n,"?",n,".",e,r,":",n,".",e)}e=e.constants.blendFuncs;var i=r("src","RGB"),a=r("dst","RGB"),o=(i=t.def(e,"[",i,"]"),t.def(e,"[",r("src","Alpha"),"]"));return[i,a=t.def(e,"[",a,"]"),o,e=t.def(e,"[",r("dst","Alpha"),"]")]});case"blend.equation":return t(function(e){return"string"==typeof e?[Z[e],Z[e]]:"object"==typeof e?[Z[e.rgb],Z[e.alpha]]:void 0},function(e,t,n){var r=e.constants.blendEquations,i=t.def(),a=t.def();return(e=e.cond("typeof ",n,'==="string"')).then(i,"=",a,"=",r,"[",n,"];"),e.else(i,"=",r,"[",n,".rgb];",a,"=",r,"[",n,".alpha];"),t(e),[i,a]});case"blend.color":return t(function(e){return a(4,function(t){return+e[t]})},function(e,t,n){return a(4,function(e){return t.def("+",n,"[",e,"]")})});case"stencil.mask":return t(function(e){return 0|e},function(e,t,n){return t.def(n,"|0")});case"stencil.func":return t(function(e){return[Ae[e.cmp||"keep"],e.ref||0,"mask"in e?e.mask:-1]},function(e,t,n){return[e=t.def('"cmp" in ',n,"?",e.constants.compareFuncs,"[",n,".cmp]",":",7680),t.def(n,".ref|0"),t=t.def('"mask" in ',n,"?",n,".mask|0:-1")]});case"stencil.opFront":case"stencil.opBack":return t(function(t){return["stencil.opBack"===e?1029:1028,ke[t.fail||"keep"],ke[t.zfail||"keep"],ke[t.zpass||"keep"]]},function(t,n,r){function i(e){return n.def('"',e,'" in ',r,"?",a,"[",r,".",e,"]:",7680)}var a=t.constants.stencilOps;return["stencil.opBack"===e?1029:1028,i("fail"),i("zfail"),i("zpass")]});case"polygonOffset.offset":return t(function(e){return[0|e.factor,0|e.units]},function(e,t,n){return[t.def(n,".factor|0"),t=t.def(n,".units|0")]});case"cull.face":return t(function(e){var t=0;return"front"===e?t=1028:"back"===e&&(t=1029),t},function(e,t,n){return t.def(n,'==="front"?',1028,":",1029)});case"lineWidth":return t(function(e){return e},function(e,t,n){return n});case"frontFace":return t(function(e){return Te[e]},function(e,t,n){return t.def(n+'==="cw"?2304:2305')});case"colorMask":return t(function(e){return e.map(function(e){return!!e})},function(e,t,n){return a(4,function(e){return"!!"+n+"["+e+"]"})});case"sample.coverage":return t(function(e){return["value"in e?e.value:1,!!e.invert]},function(e,t,n){return[t.def('"value" in ',n,"?+",n,".value:1"),t=t.def("!!",n,".invert")]})}}),i}(e),s=E(e),l=u.viewport;return l&&(c.viewport=l),(u=u[l=g("scissor.box")])&&(c[l]=u),(o={framebuffer:o,draw:f,shader:s,state:c,dirty:u=0>1)",u],");")}function t(){n(f,".drawArraysInstancedANGLE(",[d,m,v,u],");")}h?y?e():(n("if(",h,"){"),e(),n("}else{"),t(),n("}")):t()}function o(){function e(){n(s+".drawElements("+[d,v,g,m+"<<(("+g+"-5121)>>1)"]+");")}function t(){n(s+".drawArrays("+[d,m,v]+");")}h?y?e():(n("if(",h,"){"),e(),n("}else{"),t(),n("}")):t()}var u,f,c=e.shared,s=c.gl,l=c.draw,p=r.draw,h=function(){var i=p.elements,a=t;return i?((i.contextDep&&r.contextDynamic||i.propDep)&&(a=n),i=i.append(e,a)):i=a.def(l,".","elements"),i&&a("if("+i+")"+s+".bindBuffer(34963,"+i+".buffer.buffer);"),i}(),d=i("primitive"),m=i("offset"),v=function(){var i=p.count,a=t;return i?((i.contextDep&&r.contextDynamic||i.propDep)&&(a=n),i=i.append(e,a)):i=a.def(l,".","count"),i}();if("number"==typeof v){if(0===v)return}else n("if(",v,"){"),n.exit("}");J&&(u=i("instances"),f=e.instancing);var g=h+".type",y=p.elements&&P(p.elements);J&&("number"!=typeof u||0<=u)?"string"==typeof u?(n("if(",u,">0){"),a(),n("}else if(",u,"<0){"),o(),n("}")):a():o()}function Y(e,t,n,r,i){return i=(t=x()).proc("body",i),J&&(t.instancing=i.def(t.shared.extensions,".angle_instanced_arrays")),e(t,i,n,r),t.compile().body}function H(e,t,n,r){S(e,t),R(e,t,n,r.attributes,function(){return!0}),q(e,t,n,r.uniforms,function(){return!0}),U(e,t,t,n)}function V(e,t,n,r){function i(){return!0}e.batchId="a1",S(e,t),R(e,t,n,r.attributes,i),q(e,t,n,r.uniforms,i),U(e,t,t,n)}function W(e,t,n,r){function i(e){return e.contextDep&&o||e.propDep}function a(e){return!i(e)}S(e,t);var o=n.contextDep,u=t.def(),f=t.def();e.shared.props=f,e.batchId=u;var c=e.scope(),s=e.scope();t(c.entry,"for(",u,"=0;",u,"<","a1",";++",u,"){",f,"=","a0","[",u,"];",s,"}",c.exit),n.needsContext&&D(e,s,n.context),n.needsFramebuffer&&_(e,s,n.framebuffer),z(e,s,n.state,i),n.profile&&i(n.profile)&&I(e,s,n,!1,!0),r?(R(e,c,n,r.attributes,a),R(e,s,n,r.attributes,i),q(e,c,n,r.uniforms,a),q(e,s,n,r.uniforms,i),U(e,c,s,n)):(t=e.global.def("{}"),r=n.shader.progVar.append(e,s),f=s.def(r,".id"),c=s.def(t,"[",f,"]"),s(e.shared.gl,".useProgram(",r,".program);","if(!",c,"){",c,"=",t,"[",f,"]=",e.link(function(t){return Y(V,e,n,t,2)}),"(",r,");}",c,".call(this,a0[",u,"],",u,");"))}function X(e,n){function r(t){var r=n.shader[t];r&&i.set(a.shader,"."+t,r.append(e,i))}var i=e.proc("scope",3);e.batchId="a2";var a=e.shared,o=a.current;D(e,i,n.context),n.framebuffer&&n.framebuffer.append(e,i),F(Object.keys(n.state)).forEach(function(t){var r=n.state[t].append(e,i);v(r)?r.forEach(function(n,r){i.set(e.next[t],"["+r+"]",n)}):i.set(a.next,"."+t,r)}),I(e,i,n,!0,!0),["elements","offset","count","instances","primitive"].forEach(function(t){var r=n.draw[t];r&&i.set(a.draw,"."+t,""+r.append(e,i))}),Object.keys(n.uniforms).forEach(function(r){i.set(a.uniforms,"["+t.id(r)+"]",n.uniforms[r].append(e,i))}),Object.keys(n.attributes).forEach(function(t){var r=n.attributes[t].append(e,i),a=e.scopeAttrib(t);Object.keys(new Q).forEach(function(e){i.set(a,"."+e,r[e])})}),r("vert"),r("frag"),0=--this.refCount&&o(this)},i.profile&&(r.getTotalRenderbufferSize=function(){var e=0;return Object.keys(s).forEach(function(t){e+=s[t].stats.size}),e}),{create:function(t,n){function o(t,n){var r=0,a=0,s=32854;if("object"==typeof t&&t?("shape"in t?(r=0|(a=t.shape)[0],a=0|a[1]):("radius"in t&&(r=a=0|t.radius),"width"in t&&(r=0|t.width),"height"in t&&(a=0|t.height)),"format"in t&&(s=u[t.format])):"number"==typeof t?(r=0|t,a="number"==typeof n?0|n:r):t||(r=a=1),r!==c.width||a!==c.height||s!==c.format)return o.width=c.width=r,o.height=c.height=a,c.format=s,e.bindRenderbuffer(36161,c.renderbuffer),e.renderbufferStorage(36161,s,r,a),i.profile&&(c.stats.size=ve[c.format]*c.width*c.height),o.format=f[c.format],o}var c=new a(e.createRenderbuffer());return s[c.id]=c,r.renderbufferCount++,o(t,n),o.resize=function(t,n){var r=0|t,a=0|n||r;return r===c.width&&a===c.height?o:(o.width=c.width=r,o.height=c.height=a,e.bindRenderbuffer(36161,c.renderbuffer),e.renderbufferStorage(36161,c.format,r,a),i.profile&&(c.stats.size=ve[c.format]*c.width*c.height),o)},o._reglType="renderbuffer",o._renderbuffer=c,i.profile&&(o.stats=c.stats),o.destroy=function(){c.decRef()},o},clear:function(){G(s).forEach(o)},restore:function(){G(s).forEach(function(t){t.renderbuffer=e.createRenderbuffer(),e.bindRenderbuffer(36161,t.renderbuffer),e.renderbufferStorage(36161,t.format,t.width,t.height)}),e.bindRenderbuffer(36161,null)}}},ye=[];ye[6408]=4,ye[6407]=3;var be=[];be[5121]=1,be[5126]=4,be[36193]=2;var xe=["x","y","z","w"],we="blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset".split(" "),Ee={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},Ae={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},ke={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Te={cw:2304,ccw:2305},De=new M(!1,!1,!1,function(){});return function(e){function t(){if(0===Q.length)E&&E.update(),$=null;else{$=Y.next(t),l();for(var e=Q.length-1;0<=e;--e){var n=Q[e];n&&n(O,null,0)}v.flush(),E&&E.update()}}function n(){!$&&0=Q.length&&r()}}}}function s(){var e=X.viewport,t=X.scissor_box;e[0]=e[1]=t[0]=t[1]=0,O.viewportWidth=O.framebufferWidth=O.drawingBufferWidth=e[2]=t[2]=v.drawingBufferWidth,O.viewportHeight=O.framebufferHeight=O.drawingBufferHeight=e[3]=t[3]=v.drawingBufferHeight}function l(){O.tick+=1,O.time=m(),s(),V.procs.poll()}function p(){s(),V.procs.refresh(),E&&E.update()}function m(){return(H()-A)/1e3}if(!(e=i(e)))return null;var v=e.gl,g=v.getContextAttributes();v.isContextLost();var y=function(e,t){function n(t){var n;t=t.toLowerCase();try{n=r[t]=e.getExtension(t)}catch(e){}return!!n}for(var r={},i=0;it;++t)ee(q({framebuffer:e.framebuffer.faces[t]},e),f);else ee(e,f);else f(0,e)},prop:N.define.bind(null,1),context:N.define.bind(null,2),this:N.define.bind(null,3),draw:u({}),buffer:function(e){return F.create(e,34962,!1,!1)},elements:function(e){return M.create(e,!1)},texture:L.create2D,cube:L.createCube,renderbuffer:B.create,framebuffer:U.create,framebufferCube:U.createCube,attributes:g,frame:c,on:function(e,t){var n;switch(e){case"frame":return c(t);case"lost":n=Z;break;case"restore":n=K;break;case"destroy":n=J}return n.push(t),{cancel:function(){for(var e=0;e=a)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}}),f=r[n];n=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),d(t)?r.showHidden=t:t&&n._extend(r,t),y(r.showHidden)&&(r.showHidden=!1),y(r.depth)&&(r.depth=2),y(r.colors)&&(r.colors=!1),y(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=f),s(r,e,r.depth)}function f(e,t){var n=u.styles[t];return n?"["+u.colors[n][0]+"m"+e+"["+u.colors[n][1]+"m":e}function c(e,t){return e}function s(e,t,r){if(e.customInspect&&t&&A(t.inspect)&&t.inspect!==n.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(r,e);return g(i)||(i=s(e,i,r)),i}var a=function(e,t){if(y(t))return e.stylize("undefined","undefined");if(g(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(v(t))return e.stylize(""+t,"number");if(d(t))return e.stylize(""+t,"boolean");if(m(t))return e.stylize("null","null")}(e,t);if(a)return a;var o=Object.keys(t),u=function(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),E(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return l(t);if(0===o.length){if(A(t)){var f=t.name?": "+t.name:"";return e.stylize("[Function"+f+"]","special")}if(b(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(w(t))return e.stylize(Date.prototype.toString.call(t),"date");if(E(t))return l(t)}var c,x="",k=!1,T=["{","}"];(h(t)&&(k=!0,T=["[","]"]),A(t))&&(x=" [Function"+(t.name?": "+t.name:"")+"]");return b(t)&&(x=" "+RegExp.prototype.toString.call(t)),w(t)&&(x=" "+Date.prototype.toUTCString.call(t)),E(t)&&(x=" "+l(t)),0!==o.length||k&&0!=t.length?r<0?b(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),c=k?function(e,t,n,r,i){for(var a=[],o=0,u=t.length;o=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1];return n[0]+t+" "+e.join(", ")+" "+n[1]}(c,x,T)):T[0]+x+T[1]}function l(e){return"["+Error.prototype.toString.call(e)+"]"}function p(e,t,n,r,i,a){var o,u,f;if((f=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?u=f.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):f.set&&(u=e.stylize("[Setter]","special")),_(r,i)||(o="["+i+"]"),u||(e.seen.indexOf(f.value)<0?(u=m(n)?s(e,f.value,null):s(e,f.value,n-1)).indexOf("\n")>-1&&(u=a?u.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+u.split("\n").map(function(e){return" "+e}).join("\n")):u=e.stylize("[Circular]","special")),y(o)){if(a&&i.match(/^\d+$/))return u;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+u}function h(e){return Array.isArray(e)}function d(e){return"boolean"==typeof e}function m(e){return null===e}function v(e){return"number"==typeof e}function g(e){return"string"==typeof e}function y(e){return void 0===e}function b(e){return x(e)&&"[object RegExp]"===k(e)}function x(e){return"object"==typeof e&&null!==e}function w(e){return x(e)&&"[object Date]"===k(e)}function E(e){return x(e)&&("[object Error]"===k(e)||e instanceof Error)}function A(e){return"function"==typeof e}function k(e){return Object.prototype.toString.call(e)}function T(e){return e<10?"0"+e.toString(10):e.toString(10)}n.debuglog=function(e){if(y(a)&&(a=t.env.NODE_DEBUG||""),e=e.toUpperCase(),!o[e])if(new RegExp("\\b"+e+"\\b","i").test(a)){var r=t.pid;o[e]=function(){var t=n.format.apply(n,arguments);console.error("%s %d: %s",e,r,t)}}else o[e]=function(){};return o[e]},n.inspect=u,u.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},n.isArray=h,n.isBoolean=d,n.isNull=m,n.isNullOrUndefined=function(e){return null==e},n.isNumber=v,n.isString=g,n.isSymbol=function(e){return"symbol"==typeof e},n.isUndefined=y,n.isRegExp=b,n.isObject=x,n.isDate=w,n.isError=E,n.isFunction=A,n.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},n.isBuffer=e("./support/isBuffer");var D=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function _(e,t){return Object.prototype.hasOwnProperty.call(e,t)}n.log=function(){var e,t;console.log("%s - %s",(e=new Date,t=[T(e.getHours()),T(e.getMinutes()),T(e.getSeconds())].join(":"),[e.getDate(),D[e.getMonth()],t].join(" ")),n.format.apply(n,arguments))},n.inherits=e("inherits"),n._extend=function(e,t){if(!t||!x(t))return e;for(var n=Object.keys(t),r=n.length;r--;)e[n[r]]=t[n[r]];return e}}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":47,_process:44,inherits:46}],49:[function(e,t,n){var r=e("regl"),i=e("./regl-turntable-camera"),a=e("./mesh-surface-2d"),o=(e("gl-mat4/create"),e("gl-mat4/multiply"),e("gl-mat4/lookAt"));var u=r({extensions:["OES_standard_derivatives"]}),f=i(u,{distance:8,theta:0,phi:0,far:200}),c=function(e,t){var n=a({},function(e,t,n){e[0]=t,e[1]=n},{resolution:[t,t],uDomain:[-Math.PI,Math.PI],vDomain:[-Math.PI,Math.PI]});return e({vert:"\n precision highp float;\n attribute vec2 uv;\n uniform mat4 uProjection, uView, uFixedView;\n varying vec3 vPosition, vNormal;\n varying vec2 vUV;\n\n vec3 f(vec2 uv) {\n // Cartisian product of two circles:\n vec4 p = vec4(cos(uv.x), sin(uv.x), cos(uv.y), sin(uv.y)) / sqrt(2.0);\n\n // Use the upper 3x3 block of the camera's view matrix (i.e. rotation without the translation) and apply\n // // to the x-y-w coordinates\n p.xyw = mat3(uView) * p.xyw;\n\n // Compute the stereographic projection\n return p.xyz / (1.0 - p.w);\n }\n\n void main () {\n vUV = uv;\n vPosition = f(vUV);\n\n // Compute the normal via numerical differentiation\n const float dx = 2e-3;\n vNormal = normalize(cross(\n f(vUV + vec2(dx, 0)) - vPosition,\n f(vUV + vec2(0, dx)) - vPosition\n ));\n\n gl_Position = uProjection * uFixedView * vec4(vPosition, 1);\n }\n ",frag:"\n #extension GL_OES_standard_derivatives : enable\n precision highp float;\n varying vec3 vPosition, vNormal;\n uniform vec3 uFixedEye;\n uniform bool wire;\n varying vec2 vUV;\n uniform float pixelRatio;\n\n #define PI 3.141592653589\n\n // From https://github.com/rreusser/glsl-solid-wireframe\n float gridFactor (vec2 parameter, float width, float feather) {\n float w1 = width - feather * 0.5;\n vec2 d = fwidth(parameter);\n vec2 looped = 0.5 - abs(mod(parameter, 1.0) - 0.5);\n vec2 a2 = smoothstep(d * w1, d * (w1 + feather), looped);\n return min(a2.x, a2.y);\n }\n\n void main () {\n // Shading technique adapted/simplified/customized from: https://observablehq.com/@rreusser/faking-transparency-for-3d-surfaces\n vec3 normal = normalize(vNormal);\n float vDotN = abs(dot(normal, normalize(vPosition - uFixedEye)));\n float vDotNGrad = fwidth(vDotN);\n float cartoonEdge = smoothstep(0.75, 1.25, vDotN / vDotNGrad / 3.0 / pixelRatio);\n float sgn = gl_FrontFacing ? 1.0 : -1.0;\n float grid = gridFactor(vUV * vec2(2.0, 2.0) * 8.0 / PI, 0.45 * pixelRatio, 1.0);\n vec3 baseColor = gl_FrontFacing ? vec3(0.9, 0.2, 0.1) : vec3(0.1, 0.4, 0.8);\n float shade = mix(1.0, pow(vDotN, 3.0), 0.5) + 0.2;\n\n if (wire) {\n gl_FragColor.rgb = vec3(1);\n gl_FragColor.a = mix(0.15, (1.0 - grid) * 0.055, cartoonEdge);\n } else {\n gl_FragColor = vec4(pow(\n mix(baseColor, (0.5 + sgn * 0.5 * normal), 0.4) * cartoonEdge * mix(1.0, 0.6, 1.0 - grid) * shade,\n vec3(0.454)),\n 1.0);\n }\n }\n ",uniforms:{wire:e.prop("wire"),pixelRatio:e.context("pixelRatio"),uFixedView:function(){return o([],[0,0,f.params.distance],[0,0,0],[0,1,0])},uFixedEye:function(){return[0,0,f.params.distance]}},attributes:{uv:n.positions},depth:{enable:function(e,t){return!t.wire}},blend:{enable:function(e,t){return!!t.wire},func:{srcRGB:"src alpha",srcAlpha:1,dstRGB:1,dstAlpha:1},equation:{rgb:"reverse subtract",alpha:"add"}},elements:n.cells})}(u,150);u.frame(function(e){e.tick,e.time;f(function(e){e.dirty&&(u.clear({color:[1,1,1,1]}),c([{wire:!1},{wire:!0}]))})})},{"./mesh-surface-2d":51,"./regl-turntable-camera":52,"gl-mat4/create":19,"gl-mat4/lookAt":21,"gl-mat4/multiply":22,regl:45}],50:[function(e,t,n){"use strict";var r=e("gl-vec3/transformMat4"),i=e("normalized-interaction-events"),a=e("assert");t.exports=function(e,t){t=t||{};var n=e.element,u=null,f=null,c=null,s={defaultPrevented:!1};function l(){s.defaultPrevented=!1}function p(e){return e.defaultPrevented=s.defaultPrevented,e.preventDefault=function(){e.defaultPrevented=!0,s.defaultPrevented=!0},e}var h=[0,0,0],d=[0,0];return i(n).on("wheel",function(t){e.zoom(t.x0,t.y0,Math.exp(-t.dy)-1)}).on("mousedown",function(e){l(),e=p(e),u&&u(e),e.originalEvent.preventDefault()}).on("mousemove",function(t){t=p(t),c&&c(t),t.defaultPrevented||t.active&&1===t.buttons&&(t.mods.alt?(e.zoom(t.x0,t.y0,Math.exp(t.dy)-1),t.originalEvent.preventDefault()):t.mods.shift?(e.pan(t.dx,t.dy),t.originalEvent.preventDefault()):t.mods.meta?(e.pivot(t.dx,t.dy),t.originalEvent.preventDefault()):(e.rotate(-t.dx*o,-t.dy*o),t.originalEvent.preventDefault()))}).on("mouseup",function(e){e.originalEvent.preventDefault(),l(),e=p(e),f&&f(e)}).on("touchstart",function(e){e.originalEvent.preventDefault(),e=p(e),u&&u(e)}).on("touchmove",function(t){t=p(t),c&&c(t),t.defaultPrevented||t.active&&(e.rotate(-t.dx*o,-t.dy*o),t.originalEvent.preventDefault())}).on("touchend",function(e){e.originalEvent.preventDefault(),l(),e=p(e),f&&f(e)}).on("pinchmove",function(n){n.active&&(function(e){h[0]=e.x,h[1]=e.y,h[2]=0,t.invViewportShift&&r(h,h,invViewportShift),d[0]=h[0],d[1]=h[1]}(n),e.zoom(d[0],d[1],1-n.zoomx),e.pan(n.dx,n.dy),n.originalEvent.preventDefault())}).on("pinchstart",function(e){e.originalEvent.preventDefault()}),u=t.onStart,c=t.onMove,f=t.onEnd,{setInteractions:function(e){a(e),u=e.onStart,f=e.onEnd,c=e.onMove}}};var o=.75*Math.PI},{assert:1,"gl-vec3/transformMat4":23,"normalized-interaction-events":43}],51:[function(e,t,n){"use strict";function r(e,t){if(!e)throw new Error(t)}var i=[0,0,0];t.exports=function(e,t,n){var a,o,u,f,c,s=(n=n||{}).resolution||30,l=Array.isArray(n.resolution)?n.resolution[0]:s,p=Array.isArray(n.resolution)?n.resolution[1]:s,h=void 0===n.uDomain?[0,1]:n.uDomain,d=void 0===n.vDomain?[0,1]:n.vDomain;e=e||{};var m=l,v=p;n.uClosed||(m+=1),n.vClosed||(v+=1);var g=m*v,y=2*g,b=e.positions=e.positions||new Float32Array(y);r(b.length,y);var x=3*(l*p*2),w=e.cells=e.cells||new Int16Array(x);if(r(w.length,x),n.attributes){e.attributes={};var E={},A=Object.keys(n.attributes);for(a=0;aClifford Torus + + + + + + + + + + + + \ No newline at end of file