0xef9e7d2a…b34bsent to0x440e1b5a…5397·#18,781,303·0x07efdc43…9bedac
let mintNumber=parseInt(tokenData.tokenId)%1e6;var DEFAULT_SIZE=900,WIDTH=window.innerWidth,HEIGHT=window.innerHeight,DIM=Math.min(WIDTH,HEIGHT),M=DIM/DEFAULT_SIZE,WIDTH=600,HEIGHT=900;let R=new Random,ORIGIN_VECTOR,DIMENSIONS_VECTOR,TRAITS={},colourScheme,minorRoads=[],majorRoads=[],mainRoads=[],highlightRoads=[],mainRoadsGenerator,majorRoadsGenerator,minorRoadsGenerator,highlightRoadsGenerator,mainParams,majorParams,minorParams={dsep:20,dtest:15,dstep:1,dlookahead:40,dcirclejoin:5,joinangle:.1,pathIterations:1e3,seedTries:300,simplifyTolerance:.5,collideEarly:0,pathIterations:1.5*Math.max(WIDTH,HEIGHT)},TENSOR_SPAWN_SCALE=.7,basisFields=[];function sampleFieldVector(e,o){e=samplePoint(e);return o?e.getMajor():e.getMinor()}function integrate(e,o){var a=sampleFieldVector(e,o),t=sampleFieldVector(e.copy().add(createVector(minorParams.dstep/2,minorParams.dstep/2)),o),e=sampleFieldVector(e.copy().add(createVector(minorParams.dstep,minorParams.dstep)),o);return a.add(t.mult(4)).add(e).mult(minorParams.dstep/6)}function addGrid(e,o,a,t){e=new BasisField(e,o,a,t,0);basisFields.push(e)}function addRadial(e,o,a){e=new BasisField(e,o,a,1);basisFields.push(e)}function samplePoint(o){const a=Tensor.zero;return basisFields.forEach(e=>a.add(e.getWeightedTensor(o))),a}function setRecommended(){var e=createVector(WIDTH,HEIGHT),o=e.mult(TENSOR_SPAWN_SCALE),e=e.mult((1-TENSOR_SPAWN_SCALE)/2),a=(this.addGridAtLocation(e),this.addGridAtLocation(e.copy().add(o)),this.addGridAtLocation(e.copy().add(createVector(o.x,0))),this.addGridAtLocation(e.copy().add(createVector(0,o.y))),R.random_num(0,3));for(let e=0;e<a;e++)addRadialRandom()}function addRadialRandom(){var e=createVector(WIDTH,HEIGHT),o=e.x,e=e.y,a=randomLocation();a.x=R.random_num(0,o),a.y=R.random_num(0,e),addRadial(a,R.random_num(o/8,o/2),R.random_num(0,5))}function addGridAtLocation(e){addGrid(e,R.random_num(0,1600),R.random_num(0,50),R.random_num(0,Math.PI/2))}function randomLocation(){var e=createVector(WIDTH,HEIGHT),o=e.mult(TENSOR_SPAWN_SCALE),o=createVector(R.random_dec(),R.random_dec()).mult(o).mult(5),e=e.mult((1-TENSOR_SPAWN_SCALE)/2);return o.add(e)}function backFillColors(e){(colourScheme=e).outlineSize=2,colourScheme.minorWidth=3,colourScheme.majorWidth=6,colourScheme.mainWidth=7.5,colourScheme.mainWidth=7.5}function distanceToSquared(e,o){var a=o.x-e.x,o=o.y-e.y;return a*a+o*o}async function setup(){createCanvas(WIDTH*M,HEIGHT*M),ORIGIN_VECTOR=createVector(0,0),DIMENSIONS_VECTOR=createVector(WIDTH,HEIGHT),TRAITS.colorTheme=R.random_choice(C),backFillColors(TRAITS.colorTheme),TRAITS.distance=Math.floor(100*R.random_num(.1*(mintNumber+1),.2*(mintNumber+1)))/100,TRAITS.pace=600-30*R.random_num(.1*(mintNumber+1),.2*(mintNumber+1)),TRAITS.time=TRAITS.pace*TRAITS.distance,TRAITS.elevationGain=Math.floor(R.random_num(0,1e3)),TRAITS.maxElevation=Math.floor(R.random_num(0,1e3)),TRAITS.restDay=R.random_bool(.14),TRAITS.restDay&&(delete TRAITS.distance,delete TRAITS.pace,delete TRAITS.time,delete TRAITS.elevationGain,delete TRAITS.maxElevation),setRecommended(),(majorParams=Object.assign({},minorParams)).dsep=100,majorParams.dtest=30,majorParams.dlookahead=200,majorParams.collideEarly=0,majorParams.pathIterations=1.5*Math.max(WIDTH,HEIGHT)/majorParams.dstep,(mainParams=Object.assign({},minorParams)).dsep=400,mainParams.dtest=200,mainParams.dlookahead=500,mainParams.collideEarly=0,mainParams.pathIterations=1.5*Math.max(WIDTH,HEIGHT)/mainParams.dstep,mainRoadsGenerator=new RoadGenerator(mainParams),majorRoadsGenerator=new RoadGenerator(majorParams),minorRoadsGenerator=new RoadGenerator(minorParams),highlightRoadsGenerator=new RoadGenerator(minorParams),await mainRoadsGenerator.generateRoads(),await majorRoadsGenerator.generateRoads(),await minorRoadsGenerator.generateRoads(),await highlightRoadsGenerator.generateRoads(),minorRoads=minorRoadsGenerator.roads,majorRoads=majorRoadsGenerator.roads,mainRoads=mainRoadsGenerator.roads,highlightRoads=highlightRoadsGenerator.roads,background(colourScheme.bgColour),stroke(colourScheme.minorRoadOutline),strokeWeight(colourScheme.outlineSize*M+colourScheme.minorWidth*M);for(const o of minorRoads)for(let e=0;e<o.length-1;e++)line(o[e].x*M,o[e].y*M,o[e+1].x*M,o[e+1].y*M);stroke(colourScheme.majorRoadOutline),strokeWeight(colourScheme.outlineSize*M+colourScheme.majorWidth*M);for(const a of majorRoads)for(let e=0;e<a.length-1;e++)line(a[e].x*M,a[e].y*M,a[e+1].x*M,a[e+1].y*M);stroke(colourScheme.mainRoadOutline),strokeWeight(colourScheme.outlineSize*M+colourScheme.mainWidth*M);for(const r of mainRoads)for(let e=0;e<r.length-1;e++)line(r[e].x*M,r[e].y*M,r[e+1].x*M,r[e+1].y*M);stroke(colourScheme.minorRoadColour),strokeWeight(colourScheme.minorWidth*M);for(const i of minorRoads)for(let e=0;e<i.length-1;e++)line(i[e].x*M,i[e].y*M,i[e+1].x*M,i[e+1].y*M);stroke(colourScheme.majorRoadColour),strokeWeight(colourScheme.majorWidth*M);for(const n of majorRoads)for(let e=0;e<n.length-1;e++)line(n[e].x*M,n[e].y*M,n[e+1].x*M,n[e+1].y*M);stroke(colourScheme.mainRoadColour),strokeWeight(colourScheme.mainWidth*M);for(const m of mainRoads)for(let e=0;e<m.length-1;e++)line(m[e].x*M,m[e].y*M,m[e+1].x*M,m[e+1].y*M);if(rectMode(CENTER),noFill(),strokeWeight(45*M),stroke(colourScheme.highlight),rect(WIDTH*M/2,HEIGHT*M/2,WIDTH*M,HEIGHT*M,50*M),strokeWeight(5*M),TRAITS.restDay)textAlign(CENTER,CENTER),fill(colourScheme.highlight),stroke(colourScheme.highlight),textSize(200*M),strokeWeight(20*M),text("REST",WIDTH*M*.5,HEIGHT*M*(1/3)),text("DAY",WIDTH*M*.5,HEIGHT*M*(2/3));else{fill(colourScheme.bgColour),rect(WIDTH*M/2,HEIGHT*M*.828125,WIDTH*M*.5,HEIGHT*M/4,30*M),stroke(colourScheme.highlight),fill(colourScheme.highlight),strokeWeight(1.5*M),textAlign(CENTER),textSize(15*M),text("Distance:",WIDTH*M*.375,HEIGHT*M*.75),text("Moving Time:",WIDTH*M*.375,HEIGHT*M*.8125),text("Max Elevation:",WIDTH*M*.375,HEIGHT*M*.875),text("Avg Pace",WIDTH*M*.625,HEIGHT*M*.75),text("Elevation Gain",WIDTH*M*.625,HEIGHT*M*.8125),textSize(18*M),text(TRAITS.distance+" mi",WIDTH*M*.375,HEIGHT*M*(25/32));var t=Math.floor(TRAITS.time/3600);let e=Math.floor((TRAITS.time-3600*t)/60),o=Math.floor(TRAITS.time-3600*t-60*e);e<10&&(e="0"+e),o<10&&(o="0"+o),text(`${t}:${e}:`+o,WIDTH*M*.375,HEIGHT*M*(27/32)),text(TRAITS.maxElevation+" ft",WIDTH*M*.375,HEIGHT*M*(29/32));t=Math.floor(TRAITS.pace/60);let a=Math.floor(TRAITS.pace-60*t);a<10&&(a="0"+a),text(`${t}:${a} / mi`,WIDTH*M*.625,HEIGHT*M*(25/32)),text(TRAITS.elevationGain+" ft",WIDTH*M*.625,HEIGHT*M*(27/32))}}