memoscan
← all memos

Memo 0x82f397e5…24a2f9 on Ethereum

let dim,hdim,buffer,R,nox,noy,bgColor,dkBgColor,ltBgColor,fgColor,dkFgColor,edgeColor,highlightColor,shadowColor,BIOME,COMP,CITY_TYPE,GRID_TYPE,LAND_TYPE,HISTORY_TYPE,HEAVY_SEASON_FREQ,COLOR_TYPE,HISTORY_CONTRAST,FIELD_SCALE,PLOT_TYPE,SQUARE_TYPE,PALETTE_ID,RENDER_TYPE,MEANDER_TYPE,LINE_TYPE,INVERTED,HAS_CONTOURS,HAS_POISSON,DRIFTER,TREASURE_MAP,HAS_BORDER,HAS_RAILROAD,borderWidth,treasurePos,MYSIZE=1200,SIMSIZE=600,SIMRATIO=MYSIZE/SIMSIZE,MYHALF=MYSIZE/2,cs=[],BIOMES=["FARMLAND","SWAMP","DESERT","ARCTIC","MOUNTAINS"],COMPS=["HORIZONTAL","VERTICAL","DIAGONAL","SINE WAVE","S-CURVE","DOUBLE"],CITY_TYPES=["REMOTE","HAMLET","SETTLEMENT","TOWN"],GRID_TYPES=["NO GRID","JUST DOTS","PLUSSES","DOTTED LINES"],LAND_TYPES=["DESERT","SWAMP","MIXED","SPARSE","ARCTIC","MOUNTAIN"],HISTORY_TYPES=["SEQUENTIAL","STACKS","SHORTSTACKS","RANDOMIZED"],COLOR_TYPES=["FADED","VIBRANT"],FIELD_SCALES=["CLOSE","MEDIUM","FAR"],PLOT_TYPES=["EMPTY","FULL","HALVED","HALF_QUARTERED","QUARTERED"],SQUARE_TYPES=["CLEAN","OVERGROWN","REMNANT","DIVIDED"],PALETTES=["Elevation","Warm Grays","Warm Autumn","Kirkjufell","Reynisfjara","Dry Spell","Lupine Fields","Purple Sand","Lava Fisk","Classic Map","Moss","Classic Fisk","Pale Fields","Landmannalaugar","Dried Slate","Color Shift","Ocean Desert","Pale Fisk","Dark Fisk","Near Buðir","Black/White"],RENDER_TYPES=["COLORFUL","MONOCHROME","BLACKWHITE"],MEANDER_TYPES=["REALISTIC","EXCESSIVE","CLOSE-UP"],LINE_TYPES=["NONE","HIGHLIGHTED","STROKED","SHORELINE"],tps=[];const EMPTY=0,FULL=1,HALVED=2,HALF_QUARTERED=3,QUARTERED=4,CLEAN=0,OVERGROWN=1,REMNANT=2,DIVIDED=3,FARMLAND=0,SWAMP=1,DESERT=2,ARCTIC=3,MOUNTAINS=4,REMOTE=0,RURAL=1,TOWN=2,TWIN_TOWNS=3,LAND_DESERT=0,LAND_SWAMP=1,LAND_MIXED=2,LAND_SPARSE=3,LAND_ARCTIC=4,LAND_MOUNTAIN=5,REALISTIC=0,EXCESSIVE=1,CLOSEUP=2,NONE=0,HIGHLIGHTED=1,STROKED=2,SEQUENTIAL=0,STACKS=1,SHORTSTACKS=2,RANDOMIZED=3;let riverBg,riverFg,river,riverDur,riverSpacing,riverSpeed,riverWidth,riverTanLerp,riverHistoryIter,riverCollSpacing,riverCollDistSqrd,riverHistoryCount,riverStartPos,riverEndPos,plotBg,plotsImg,plotGrowthSpeed,plotTypeThresh,plotStartFrame,rail,railStartFrame,landBg,poisson,poissonStartFrame,field,SUN_DIRECTION,mainSw,mainGapMin,mainGapMax,qTree,overlayFg,mainRand,plots=[],Q_MAX_GEN=7,qRects=[],qUpdated=!1,HALFPI=1.570796,TOTAL_DUR=2e3,myFrameCount=0,introAnim=0,introDur=60,riverStartFrame=350,riverFramePer=0,ITERATION=0,SHOW_DETAILS=!1,SAVE_IMAGE=!1,SAVE_PRINT_RES=!1,SAVE_ALT_PRINT_RES=!1;class Random{constructor(){this.useA=!1;let e=function(e){let r=parseInt(e.substr(0,8),16),t=parseInt(e.substr(8,8),16),o=parseInt(e.substr(16,8),16),n=parseInt(e.substr(24,8),16);return function(){let e=((r|=0)+(t|=0)|0)+(n|=0)|0;return n=n+1|0,r=t^t>>>9,t=(o|=0)+(o<<3)|0,o=(o=o<<21|o>>>11)+e|0,(e>>>0)/4294967296}};this.prngA=new e(tokenData.hash.substr(2,32)),this.prngB=new e(tokenData.hash.substr(34,32));for(let e=0;e<1e6;e+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(e,r){return e+(r-e)*this.random_dec()}random_int(e,r){return Math.floor(this.random_num(e,r+1))}random_bool(e){return this.random_dec()<e}random_choice(e){return e[this.random_int(0,e.length-1)]}}function createColors(e){let r=[];append(r,[35,92,92,44,158,158,158,248,238,255,254,204,242,130,90]),append(r,[166,164,165,64,63,62,242,236,233,217,167,150,191,105,105]),append(r,[89,73,54,242,214,179,217,168,126,94,8,11,181,56,56]),append(r,[186,203,217,109,150,166,21,56,64,92,115,63,159,171,135]),append(r,[94,113,138,8,30,38,49,78,89,213,217,199,193,87,80]),append(r,[166,158,143,217,208,193,166,130,99,140,72,48,124,165,157]),append(r,[146,153,110,252,255,235,223,230,188,131,95,153,214,188,230]),append(r,[237,199,183,238,226,220,186,178,181,18,60,105,172,59,97]),append(r,[69,133,140,160,217,217,217,197,137,191,151,101,217,43,4]),append(r,[134,154,166,242,220,194,242,163,94,38,30,23,191,162,136]),append(r,[16,69,79,80,98,102,129,130,116,163,171,120,202,224,119]),append(r,[147,184,177,247,210,198,226,114,91,255,248,197,128,143,106]),append(r,[230,244,242,184,216,205,168,126,52,242,212,126,255,239,205]),append(r,[122,159,191,156,193,216,114,101,37,216,204,145,165,41,41]),append(r,[215,215,217,104,120,140,166,143,73,191,165,132,115,101,85]),append(r,[191,107,130,37,65,89,128,151,166,197,209,217,242,236,145]),append(r,[59,102,140,87,115,140,33,49,64,140,104,45,255,218,158]),append(r,[223,173,137,115,103,88,186,201,189,237,222,199,222,122,108]),append(r,[30,73,89,217,152,95,242,214,189,166,69,33,115,34,16]),append(r,[225,223,242,180,185,217,1,40,64,191,160,4,140,117,3]),append(r,[20,20,20,70,70,70,120,120,120,150,150,150,225,225,225]),cs=[];let t=r[e];for(let e=0;e<5;e++){let r=3*e,o=255*pow(t[r+0]/255,1),n=255*pow(t[r+1]/255,1),i=255*pow(t[r+2]/255,1),l=color(int(o),int(n),int(i));brightness(l);append(cs,l)}colorMode(HSB,255);let o=[];for(let e=0;e<cs.length;e++){let r=cs[e],t=brightness(r);append(o,t)}let n=0;for(;n<cs.length;){for(let e=0;e<cs.length-n-1;e++){cs[e],cs[e+1];o[e]>o[e+1]&&(swap(cs,e,e+1),swap(o,e,e+1))}n++}colorMode(RGB,255)}function getColor(e){let r;if(e<.2){let t=map(e,0,.2,0,1);r=lerpColor(cs[0],cs[1],t)}else if(e<.4){let t=map(e,.2,.4,0,1);r=lerpColor(cs[1],cs[2],t)}else if(e<.6){let t=map(e,.4,.6,0,1);r=lerpColor(cs[2],cs[3],t)}else if(e<.8){let t=map(e,.6,.8,0,1);r=lerpColor(cs[3],cs[4],t)}else{let t=map(e,.8,1,0,1);r=lerpColor(cs[4],cs[0],t)}return r}function readColor(e,r,t){let o=4*(int(e)+int(r)*SIMSIZE),n=t.pixels[o+0],i=t.pixels[o+1],l=t.pixels[o+2];return color(n,i,l,255)}function writeColor(e,r,t,o){let n=4*(int(e)+int(r)*SIMSIZE);o.pixels[n+0]=red(t),o.pixels[n+1]=green(t),o.pixels[n+2]=blue(t),o.pixels[n+3]=255}function wrapTheta(e){let r=e;return r<0?r+=TWO_PI:r>TWO_PI&&(r-=TWO_PI),r}function swap(e,r,t){let o=e[r];e[r]=e[t],e[t]=o}function getNoise(e,r){return noise(e.x*r+nox,e.y*r+noy)}function resampleLine(e,r,t){let o=[];return append(o,e),append(o,r),o=resample(o,t)}function resample(e,r){let t=e.length,o=[],n=0;for(let r=0;r<e.length-1;r++){let t=e[r],i=e[r+1],l=p5.Vector.dist(t,i);n+=l,append(o,l)}let i=r,l=ceil(n/float(i));i=n/float(l);let a=0,E=0,p=[];append(p,createVector(e[0].x,e[0].y));for(let r=1;r<l;r++){let r=float(E),t=0;for(;r<=i;)r+=o[a],a++,t++;let n=a-1,l=1-(r-i)/o[n];E=r-i;let s=e[n],S=e[n+1],T=p5.Vector.lerp(s,S,l);T.x=Math.floor(1e7*T.x)/1e7,T.y=Math.floor(1e7*T.y)/1e7,append(p,T)}return append(p,e[t-1]),p}function smoothSubdiv(e){let r=e.length,t=[];for(let o=0;o<r-1;o++){let r,n=e[o],i=e[o+1];if(o>0){let t=e[o-1],l=(4*n.x+t.x+i.x)/6,a=(4*n.y+t.y+i.y)/6;r=createVector(l,a)}else r=n.copy();let l=r.copy(),a=p5.Vector.add(n,i);a.x*=.5,a.y*=.5,append(t,l),append(t,a)}return append(t,e[r-1]),t}function calcCoordFrame(e){let r=e.length,t=[],o=createVector(0,0);for(let n=0;n<r;n++){if(0==n){let r=e[n],t=e[n+1];o=p5.Vector.sub(t,r).normalize()}else if(n==r-1){let r=e[n-1],t=e[n];o=p5.Vector.sub(t,r).normalize()}else{let r=e[n-1],t=e[n],i=e[n+1],l=p5.Vector.sub(t,r),a=p5.Vector.sub(i,t);o=p5.Vector.lerp(l,a,.5).normalize()}append(t,createVector(o.x,o.y)),append(t,createVector(o.y,-o.x))}return t}function calcFlowBitangent(e,r){let t,o=e.length,n=[];for(let i=0;i<o;i++){let l=(i+1)%o,a=e[i].normalize(),E=e[l].normalize();t=r[i].copy();let p=createVector(a.x,a.y,0),s=createVector(E.x,E.y,0);p5.Vector.cross(p,s).z<0&&(t=createVector(-t.x,-t.y));let S=p5.Vector.dot(p,s),T=sqrt(1-S)*riverSpeed;t=createVector(t.x*T,t.y*T),append(n,t)}return n}function distanceToRiver(e){let r=river.getPs(),t=1e3;for(let o=0;o<r.length;o+=3){let n=r[o],i=p5.Vector.dist(n,e);i<t&&(t=i)}return t}function drawRiver(e,r,t,o,n,i){riverStartPos=e[0].copy(),riverEndPos=e[e.length-1].copy();let l=riverHistoryCount%5;HISTORY_TYPE==STACKS?l=int(.2*riverHistoryCount)%5:HISTORY_TYPE==SHORTSTACKS?l=int(.4*riverHistoryCount)%5:HISTORY_TYPE==RANDOMIZED&&(l=R.random_int(0,4));let a=cs[l],E=o,p=createVector(0,0),s=createVector(.75*-SUN_DIRECTION.x,.75*-SUN_DIRECTION.y),S=createVector(.75*SUN_DIRECTION.x,.75*SUN_DIRECTION.y),T=!1;LINE_TYPE==STROKED&&(T=!0);let d=buildRiverGeo(e,r,t,o,n);if(myFrameCount%riverHistoryIter==0&&myFrameCount<=riverDur){let i=lerpColor(bgColor,a,riverFramePer*HISTORY_CONTRAST),l=lerpColor(i,color(0,0,0),.25);if(LINE_TYPE==HIGHLIGHTED&&drawRiverGeo(d,s,1,riverBg,l,T,E,shadowColor,n),R.random_dec()<HEAVY_SEASON_FREQ&&(i=fgColor),drawRiverGeo(d,S,1,riverBg,highlightColor,T,E,shadowColor,n),drawRiverGeo(d,p,1,riverBg,i,T,E,l,n),MEANDER_TYPE==CLOSEUP){let i=buildRiverGeo(e,r,t,.875*o,n),a=buildRiverGeo(e,r,t,1*o,n);drawDottedRiverLine(i,.4*E,riverBg,l),drawDottedRiverLine(a,.4*E,riverBg,l)}}if(myFrameCount<=riverDur&&(LINE_TYPE==HIGHLIGHTED&&drawRiverGeo(d,s,1,riverFg,shadowColor,!1,E,color(0),n),drawRiverGeo(d,p,1,riverFg,fgColor,T,3*mainSw,dkFgColor,n)),myFrameCount==riverDur&&3==LINE_TYPE)for(let i=0;i<20;i++){let l=map(i,0,19,0,1),a=buildRiverGeo(e,r,t,o*(13*pow(l,3)+1),n),p=255*(1-l),s=color(red(fgColor),green(fgColor),blue(fgColor),p);drawDottedRiverLine(a,.3*E,riverBg,s)}if(MEANDER_TYPE==CLOSEUP&&myFrameCount==riverDur){riverFg.strokeCap(SQUARE);let i=buildRiverGeo(e,r,t,.875*o,n);drawDottedRiverLine(i,.6*E,riverFg,shadowColor);let l=buildRiverGeo(e,r,t,1*o,n);drawDottedRiverLine(l,.3*E,riverFg,shadowColor)}}function drawRiverBanks(e){let r=[],t=int(map(mainRand,0,1,3,15)),o=resample(e,1);for(let e=0;e<o.length;e++){let n=o[e];.5*(getNoise(n,.04)+getNoise(n,.01))<.3&&R.random_bool(.5)&&(n.x+=R.random_num(-t,t),n.y+=R.random_num(-t,t),n.x=int(n.x/t)*t,n.y=int(n.y/t)*t,append(r,n))}for(let e=0;e<r.length;e++){let o=r[e],n=distanceToRiver(o),i=map(n,0,150,.25*t,.01*t,!0);riverBg.stroke(edgeColor),riverBg.strokeWeight(mainSw*i*2.5),riverBg.stroke(cs[R.random_int(0,4)]),riverBg.line(o.x-i,o.y-i,o.x+i,o.y+i),riverBg.line(o.x+i,o.y-i,o.x-i,o.y+i)}}function buildRiverGeo(e,r,t,o,n){let i,l=createVector(0,0),a=e.length,E=[],p=[];for(let s=0;s<a;s++){let S=e[s],T=r[s],d=t[s].mag(),R=riverWidth;if(n||(R+=.5*d),i=map(getNoise(S,.01),0,1,.15*R,.9*R)*o,n){let e=map(s,0,a-1,0,1);i*=.9*pow(Math.sin(e*PI),.5)+.1}append(E,i),l=createVector(S.x+T.x*i,S.y+T.y*i),append(p,l)}for(let t=a-1;t>=0;t--){map(t,0,a-1,0,1);let o=e[t],n=r[t];i=E[t],l=createVector(o.x-n.x*i,o.y-n.y*i),append(p,l)}return p=smoothSubdiv(p=smoothSubdiv(p))}