0xdcf4de0c…9ddcsent to0x0a1bbd57…3676·#15,883,585·view on Etherscan
class Tepal{constructor(t,e,i,s,r){this.position=t,this.size=e,this.rotation=i,this.q=s,this.de=r,this.ke(),this.Ce=new Space(t,this.size/2,5),this.Ce.we(this.Te),this.be=new Leaf(new Vector(this.position.x,this.position.y),this.Ce,this.q.Yt)}ke(){this.De=this.q.Ht,this.Te=this.q.Ot(this.position,this.size,this.de),this.shape=[],this.Fe(),this.Ht=[],this.ye()}show(){translate(this.position.x,this.position.y),rotate(radians(this.rotation)),translate(-this.position.x,-this.position.y),this.Se(),this.be.show(),this.me()}Se(){push(),fill(this.q.Pt),stroke(this.q.borderColor),strokeWeight(this.q.Vt),beginShape();for(let t=0;t<this.shape.length;t++)curveVertex(this.shape[t].x,this.shape[t].y);endShape(CLOSE),pop()}me(){for(let t=this.Ht.length-1;0<=t;t--)this.We(this.Ht[t],this.De[t])}We(e,i){push();var t=color(i.color);t.setAlpha(i.alpha),noStroke(),fill(t);for(let t=0;t<e.length;t++)ellipse(e[t].x,e[t].y,i.Qt,i.Qt);pop()}xe(t){var e=1/this.Te.a*cos(t*this.Te.Le/4),e=abs(e),t=(e=pow(e,this.Te._e),1/this.Te.b*sin(t*this.Te.Le/4)),t=abs(t),e=(t=pow(t,this.Te.ze),pow(e+t,1/this.Te.Ae));return 0===e?0:1/e}Fe(){var e=this.size/2;let i;i=1==this.q.type?.015:.1;for(let t=0;t<=TWO_PI;t+=i){var s=this.xe(t),r=R.C(-3,3),s=new Vector(this.position.x+e*s*cos(t)+r,this.position.y+e*s*sin(t)+r);this.shape.push(s)}}ye(){for(let t=0;t<this.De.length;t++){var e=this.createTexture(this.De[t]);this.Ht.push(e)}}createTexture(e){var i=[];for(let t=e.Bt;t<this.size/2.15;t+=e.Bt){var s,r,o=t;if(R.m()<.5)for(let t=0;t<=TWO_PI;t+=R.C(0,this.Te.grow))R.m()>e.Ut||(s=this.xe(t),s=new Vector(this.position.x+o*s*cos(t),this.position.y+o*s*sin(t)),i.push(s));else for(let t=0;t<=TWO_PI;t+=this.Te.grow)R.m()>e.Ut||(r=this.xe(t),r=new Vector(this.position.x+o*r*cos(t),this.position.y+o*r*sin(t)),i.push(r))}return i}grow(){return this.be.grow()}static Nt(t,e){return function(t,e){var i=R.m();let s;return s=i<.35?12:i<.55?16:i<.75?18:20,{a:R.C(-.4,1.5),b:R.C(.7,2),Ae:R.C(4,14),_e:R.C(.5,1),ze:-1.8,Le:s,Bt:R.C(30,80),position:t,size:e/2,grow:R.C(.01,.05)}}}static Jt(t,e){return function(t,e,i){return{a:R.C(-.4,1.5),b:R.C(.7,2),Ae:R.C(4,14),_e:R.C(.5,1),ze:-1.8,Le:i?i.Te.Le*R.C(1,2):10,Bt:30,position:t,size:e/2,grow:R.C(.01,.05)}}}static Zt(t,e){return function(t,e){var i=R.m();let s;return s=i<.33?6:i<.66?8:10,{a:3.8,b:R.C(.45,.8),Ae:R.C(6,8),_e:R.C(.6,.7),ze:R.C(-1.6,-1.2),Le:s,Bt:R.C(30,100),position:t,size:e/2,grow:R.C(.001,.1)}}}static $t(t,e){return function(t,e,i){return{a:3.8,b:R.C(.25,.8),Ae:R.C(4,8),_e:R.C(.6,.9),ze:R.C(-1.8,-1.2),Le:i?i.Te.Le:6,Bt:100,position:t,size:e/2,grow:R.C(5e-4,.1)}}}static te(t,e){return function(t,e,i){return{a:-.4,b:1,Ae:3,_e:R.C(.1,2),ze:R.C(-10,-1.8),Le:i?i.Te.Le:6,Bt:R.C(50,80),position:t,size:e/2,grow:.01}}}static ee(t,e){return function(t,e,i){return{a:-.4,b:1,Ae:3,_e:R.C(.1,2),ze:R.C(-10,-1.8),Le:i?i.Te.Le:6,Bt:R.C(50,80),position:t,size:e/2,grow:.01}}}static ie(t,e){return function(t,e){var i=R.m();let s;return s=i<.25?12:i<.5?14:i<.75?16:18,{a:-.2,b:-.7,Ae:R.C(9,17),_e:.6,ze:-2.6,Le:s,Bt:100,position:t,size:e/2,grow:.01}}}static se(t,e){return function(t,e,i){return{a:-.2,b:-.7,Ae:i?i.Te.Ae:6,_e:.6,ze:-2.6,Le:i?i.Te.Le:10,Bt:50,position:t,size:e/2,grow:.01}}}static re(t,e){return function(t,e,i){return{a:-.2,b:-.7,Ae:5,_e:.6,ze:-2.6,Le:i?i.Te.Le*R.k(1,2):10,Bt:20,position:t,size:e/2,grow:.01}}}static oe(t,e){return function(t,e,i){return{a:-.2,b:-.7,Ae:5,_e:.6,ze:-2.6,Le:i?2*i.Te.Le:10,Bt:100,position:t,size:e/2,grow:.01}}}static ne(t,e){return function(t,e){var i=R.m();let s;return s=i<.35?10:i<.65?12:14,{a:R.C(-1.2,-.1),b:-.7,Ae:R.C(5,10),_e:R.C(.6,.9),ze:R.C(-3.6,-2.6),Le:s,Bt:R.C(50,80),position:t,size:e/2,grow:.01}}}static ae(t,e){return function(t,e,i){return{a:R.C(-1.2,-.1),b:R.C(-.9,-.7),Ae:R.C(5,10),_e:R.C(.6,.9),ze:R.C(-10.6,-2.6),Le:i?i.Te.Le:10,Bt:R.C(50,80),position:t,size:e/2,grow:R.C(.005,.01)}}}static he(t,e){return function(t,e,i){return{a:3,b:1,Ae:R.C(11,12),_e:15,ze:4,Le:i?i.Te.Le:10,Bt:100,position:t,size:e/2,grow:.01}}}static le(t,e){return function(t,e,i){return{a:1,b:1,Ae:13.5,_e:R.C(5.5,35.5),ze:13.5,Le:i?i.Te.Le/2:10,Bt:R.k(10,100),position:t,size:e/2,grow:.01}}}static ce(t,e){return function(t,e){var i=R.m();let s;return{a:-10,b:-2,Ae:-2,_e:0,ze:1,Le:s=i<.35?24:i<.65?32:40,Bt:50,position:t,size:e/2,grow:.01}}}static Re(t,e){return function(t,e){var i=R.m();let s;return{a:7,b:3,Ae:4,_e:-1,ze:-3,Le:s=i<.35?6:i<.65?8:10,Bt:100,position:t,size:e/2,grow:.01}}}static pe(t,e){return function(t,e){return{a:7,b:3,Ae:4,_e:-1,ze:-3,Le:R.k(18,30),Bt:50,position:t,size:e/2,grow:.01}}}static ue(t,e){return function(t,e){return{a:5,b:-4,Ae:-8,_e:7,ze:9,Le:R.k(20,50),Bt:100,position:t,size:e/2,grow:.01}}}static Ee(t,e){return function(t,e){return{a:5,b:-4,Ae:R.k(-8.5,-7.5),_e:7,ze:R.k(2,10),Le:R.k(20,40),Bt:100,position:t,size:e/2,grow:.01}}}static ge(t,e){return function(t,e){return{a:9,b:1,Ae:6,_e:-2,ze:-7,Le:R.k(6,10),Bt:200,position:t,size:e/2,grow:.0075}}}static ve(t,e){return function(t,e,i){return{a:4,b:-2,Ae:3,_e:-1,ze:-5,Le:i?i.Te.Le*R.k(1,2):10,Bt:200,position:t,size:e/2,grow:.0075}}}static fe(t,e){return function(t,e){return{a:4,b:-2,Ae:3,_e:-1,ze:-3,Le:6,Bt:100,position:t,size:e/2,grow:.01}}}}class Auxin{constructor(t){this.position=t,this.Ie=!1,this.Me=[]}show(){this.Ie||ellipse(this.position.x,this.position.y,10,10)}reset(){this.Me=[]}Pe(s,r,o,t){if(t){let e=void 0,i=this.Kt;for(let t=0;t<s.length;t++){var n=s[t],a=this.position.Ve(n.position);if(a<o){this.Ie=!0,e=void 0;break}a<=r&&(void 0===e||a<i)&&(e=n,i=a)}void 0!==e&&this.Me.push(e)}}}const _DEFAULT_KILL_DISTANCE=10,_DEFAULT_ATTRACTION_DISTANCE=500,_DEFAULT_VEIN_LENGTH=5,_DEFAULT_OPEN_VENATION=!0,_DEFAULT_VEIN_COLOR="#FF0000",_DEFAULT_VEIN_THICKNESS=1,_DEFAULT_MAX_STEADY_CYCLES=20;class Leaf{constructor(t,e,i){this.position=t,this.Ce=e.Ce,this.Oe=this.Ce.length,this.Ne=0,this.be=[],this.He=new Quadtree(t,e.Ue,50),this.Be=new Vein(this.position.copy(),new Vector(1,1)),this.add(this.Be),this.Xt=void 0===(i=void 0===i?{}:i).Xt?_DEFAULT_KILL_DISTANCE:i.Xt,this.Kt=void 0===i.Kt?_DEFAULT_ATTRACTION_DISTANCE:i.Kt,this.Gt=void 0===i.Gt?_DEFAULT_VEIN_LENGTH:i.Gt,this.Qe=void 0===i.Qe?_DEFAULT_OPEN_VENATION:i.Qe,this.jt=void 0===i.jt?_DEFAULT_VEIN_COLOR:i.jt,this.qt=void 0===i.qt?_DEFAULT_VEIN_THICKNESS:i.qt,this.Ye=void 0===i.Ye?_DEFAULT_MAX_STEADY_CYCLES:i.Ye}add(t){this.be.push(t),this.He.add(t)}show(){push(),stroke(this.jt),strokeWeight(this.qt),this.be.forEach(t=>{t.show()}),pop()}grow(){if(0==this.Ce.length||this.Ne>this.Ye)return!0;for(let t=0;t<this.Ce.length;t++){var e=this.Ce[t],i=[];this.He.find(e.position,this.Kt,i),e.Pe(i,this.Kt,this.Xt,this.Qe)}for(let t=0;t<this.Ce.length;t++){var s=this.Ce[t];if(0!=s.Me.length)for(let t=0;t<s.Me.length;t++)s.Me[t].Xe(s)}for(let t=this.be.length-1;0<=t;t--){var r=this.be[t];0<r.count&&(r.Ke(),this.add(r.next(this.Gt)),r.reset())}for(let t=this.Ce.length-1;0<=t;t--){var o=this.Ce[t];o.Ie?this.Ce.splice(t,1):o.reset()}return this.Ce.length==this.Oe&&this.Ne++,this.Oe=this.Ce.length,!1}}class Quadtree{constructor(t,e,i){this.position=t,this.Ue=e,this.Ge=i,this.je=!1,this.points=[]}add(t){return!!this.contains(t)&&(this.points.length<this.Ge?(this.points.push(t),!0):(this.je||this.qe(),this.Je.add(t)||this.Ze.add(t)||this.$e.add(t)||this.ti.add(t)))}qe(){this.Je=new Quadtree(new Vector(this.position.x-this.Ue/2,this.position.y-this.Ue/2),this.Ue/2,this.Ge),this.Ze=new Quadtree(new Vector(this.position.x+this.Ue/2,this.position.y-this.Ue/2),this.Ue/2,this.Ge),this.$e=new Quadtree(new Vector(this.position.x+this.Ue/2,this.position.y+this.Ue/2),this.Ue/2,this.Ge),this.ti=new Quadtree(new Vector(this.position.x-this.Ue/2,this.position.y+this.Ue/2),this.Ue/2,this.Ge),this.je=!0}contains(t){t=t.position;return t.x>=this.position.x-this.Ue&&t.x<=this.position.x+this.Ue&&t.y>=this.position.y-this.Ue&&t.y<=this.position.y+this.Ue}find(e,i,s){if(!(e.x-i>this.position.x+this.Ue||e.x+i<this.position.x-this.Ue||e.y-i>this.position.y+this.Ue||e.y+i<this.position.y-this.Ue)){for(let t=0;t<this.points.length;t++){var r=this.points[t];r.position.x>=e.x-i&&r.position.x<=e.x+i&&r.position.y>=e.y-i&&r.position.y<=e.y+i&&s.push(r)}this.je&&(this.Je.find(e,i,s),this.Ze.find(e,i,s),this.$e.find(e,i,s),this.ti.find(e,i,s))}}}class Space{constructor(t,e){this.position=t,this.Ue=e,this.Ce=[]}we(i){for(let t=i.Bt;t<i.size;t+=i.Bt){var s=t;for(let e=0;e<TWO_PI;e+=.01){var r=1/i.a*cos(e*i.Le/4),r=abs(r),o=(r=pow(r,i._e),1/i.b*sin(e*i.Le/4)),o=abs(o),r=(o=pow(o,i.ze),pow(r+o,1/i.Ae));let t;t=0===r?0:1/r;o=new Vector(i.position.x+s*t*cos(e),i.position.y+s*t*sin(e)),r=new Auxin(o);this.Ce.push(r)}}}show(){this.Ce.forEach(t=>{t.show()})}}class Vector{constructor(...t){this.components=t,this.components.length<1||(this.x=t[0],this.components.length<2||(this.y=t[1],this.components.length<3||(this.z=t[2])))}add({components:t}){return new Vector(...t.map((t,e)=>this.components[e]+t))}ei({components:t}){return new Vector(...t.map((t,e)=>this.components[e]-t))}scale(e){return new Vector(...this.components.map(t=>t*e))}ii(e){return new Vector(...this.components.map(t=>t/e))}length(){return Math.hypot(...this.components)}normalize(){return this.scale(1/this.length())}copy(){return new Vector(...this.components)}Ve({components:t}){return Math.hypot(...t.map((t,e)=>this.components[e]-t))}}class Vein{constructor(t,e,i){this.position=t,this.parent=i,this.direction=e.copy(),this.si=e.copy(),this.count=0}show(){void 0!==this.parent&&line(this.position.x,this.position.y,this.parent.position.x,this.parent.position.y)}reset(){this.direction=this.si.copy(),this.count=0}next(t){t=this.direction.scale(t),t=this.position.add(t);return new Vein(t,this.direction,this)}Xe(t){t=t.position.ei(this.position).normalize();this.direction=this.direction.add(t),this.count++}Ke(){this.direction=this.direction.ii(this.count+1)}}