0x9b85a37a…aa34sent to0x942bc2d3…5c8a·#15,881,261·view on Etherscan
class Room{constructor(t){this.boxFront=this.makeFrontOfBox(t),this.boxBack=this.makeBackOfBox(),this.slices=this.makeSlices(),this.flowerPowerPts=this.makeFlowerPowerPts()}makeFrontOfBox(t){return t}makeBackOfBox(){let t=getBoxData(this.boxFront);return this.offset=[RR(-t.width/2,t.width/2),RR(0,-t.height/2)],[pv(this.boxFront[0].x+this.offset[0],this.boxFront[0].y+this.offset[1]),pv(this.boxFront[1].x+this.offset[0],this.boxFront[1].y+this.offset[1]),pv(this.boxFront[2].x+this.offset[0],this.boxFront[2].y+this.offset[1]),pv(this.boxFront[3].x+this.offset[0],this.boxFront[3].y+this.offset[1])]}makeSlices(){let t=[],e=[.1,.5,.9];for(let r=Math.floor(RR(0,3));r<e.length;r++){let s=pv(lerp(this.boxBack[0].x,this.boxFront[0].x,e[r]),lerp(this.boxBack[0].y,this.boxFront[0].y,e[r])),o=pv(lerp(this.boxBack[1].x,this.boxFront[1].x,e[r]),lerp(this.boxBack[1].y,this.boxFront[1].y,e[r])),l=pv(lerp(this.boxBack[2].x,this.boxFront[2].x,e[r]),lerp(this.boxBack[2].y,this.boxFront[2].y,e[r])),a=pv(lerp(this.boxBack[3].x,this.boxFront[3].x,e[r]),lerp(this.boxBack[3].y,this.boxFront[3].y,e[r]));t.push([s,o,l,a])}return t}makeFlowerPowerPts(){if(flowerPower&&0==artistStyle){let t=[],e=[],r=(this.boxFront[1].x-this.boxFront[0].x)/10;return this.boxBack.forEach((e,s,o)=>{t.push([pv(o[s].x+RR(-r,r),o[s].y+RR(-r,r)),pv(o[(s+1)%o.length].x+RR(-r,r),o[(s+1)%o.length].y+RR(-r,r))])}),t.push([pv(this.boxBack[2].x,this.boxBack[2].y),pv(this.boxFront[2].x,this.boxFront[2].y)]),t.push([pv(this.boxBack[3].x,this.boxBack[3].y),pv(this.boxFront[3].x,this.boxFront[3].y)]),this.offset[0]>0?t.push([pv(this.boxBack[0].x,this.boxBack[0].y),pv(this.boxFront[0].x,this.boxFront[0].y)]):t.push([pv(this.boxBack[1].x,this.boxBack[1].y),pv(this.boxFront[1].x,this.boxFront[1].y)]),this.boxFront.forEach((t,s,o)=>{e.push([pv(o[s].x+RR(-r,r),o[s].y+RR(-r,r)),pv(o[(s+1)%o.length].x+RR(-r,r),o[(s+1)%o.length].y+RR(-r,r))])}),this.offset[0]<=0?e.push([pv(this.boxBack[0].x,this.boxBack[0].y),pv(this.boxFront[0].x,this.boxFront[0].y)]):e.push([pv(this.boxBack[1].x,this.boxBack[1].y),pv(this.boxFront[1].x,this.boxFront[1].y)]),[t,e]}return[]}drawFront(){strokeCap(PROJECT),strokeWeight(this.strokeBase*globalScaler),flowerPower&&0===artistStyle?this.flowerPowerPts[1].forEach(t=>{line(t[0].x*globalScaler,t[0].y*globalScaler,t[1].x*globalScaler,t[1].y*globalScaler)}):(this.boxFront.forEach((t,e,r)=>{line(r[e].x*globalScaler,r[e].y*globalScaler,r[(e+1)%r.length].x*globalScaler,r[(e+1)%r.length].y*globalScaler)}),strokeCap(ROUND),this.offset[0]<=0?line(this.boxBack[0].x*globalScaler,this.boxBack[0].y*globalScaler,this.boxFront[0].x*globalScaler,this.boxFront[0].y*globalScaler):line(this.boxBack[1].x*globalScaler,this.boxBack[1].y*globalScaler,this.boxFront[1].x*globalScaler,this.boxFront[1].y*globalScaler)),strokeCap(PROJECT)}drawBack(){strokeCap(PROJECT),strokeWeight(this.strokeBase*globalScaler),flowerPower&&0===artistStyle?this.flowerPowerPts[0].forEach(t=>{line(t[0].x*globalScaler,t[0].y*globalScaler,t[1].x*globalScaler,t[1].y*globalScaler)}):(this.boxBack.forEach((t,e,r)=>{line(r[e].x*globalScaler,r[e].y*globalScaler,r[(e+1)%r.length].x*globalScaler,r[(e+1)%r.length].y*globalScaler)}),strokeCap(ROUND),line(this.boxBack[2].x*globalScaler,this.boxBack[2].y*globalScaler,this.boxFront[2].x*globalScaler,this.boxFront[2].y*globalScaler),line(this.boxBack[3].x*globalScaler,this.boxBack[3].y*globalScaler,this.boxFront[3].x*globalScaler,this.boxFront[3].y*globalScaler),this.offset[0]>0?line(this.boxBack[0].x*globalScaler,this.boxBack[0].y*globalScaler,this.boxFront[0].x*globalScaler,this.boxFront[0].y*globalScaler):line(this.boxBack[1].x*globalScaler,this.boxBack[1].y*globalScaler,this.boxFront[1].x*globalScaler,this.boxFront[1].y*globalScaler)),strokeCap(PROJECT)}makeFillPoints(){let t=[];return this.boxFront[0].x<this.boxBack[0].x?(t.push(this.boxBack[0]),t.push(this.boxBack[1]),t.push(this.boxBack[2]),t.push(this.boxFront[2]),t.push(this.boxFront[3]),t.push(this.boxFront[0])):(t.push(this.boxBack[3]),t.push(this.boxBack[0]),t.push(this.boxBack[1]),t.push(this.boxFront[1]),t.push(this.boxFront[2]),t.push(this.boxFront[3])),t}drawFill(){let t=this.makeFillPoints();fill(cc[3]),noStroke(),beginShape(),t.forEach(t=>{vertex(t.x*globalScaler,t.y*globalScaler)}),endShape(CLOSE)}gatherBBs(){return combineBB([boxToBB(this.boxFront),boxToBB(this.boxBack)])}moveAndScale(t,e=pv(0,0),r=pv(0,0)){translateArrDepth1(this.boxFront,e,r),scaleArr(this.boxFront,t,r),translateArrDepth1(this.boxBack,e,r),scaleArr(this.boxBack,t,r),this.flowerPowerPts.forEach(s=>{translateArrDepth2(s,e,r),scaleArrDouble(s,t,r)}),this.slices.map(s=>{translateArrDepth1(s,e,r),scaleArr(s,t,r)});let s=getBoxData(this.boxFront);this.strokeBase=min(s.width,s.height)/200*2.4}}let coords=[[0,0],[50,0],[100,0],[0,50],[50,50],[100,50],[0,100],[50,100],[100,100]],arcPoints=[[50,25],[50,50],[50,75]];function interpretLetter(t){t+="m";let e=[],r=[];for(let s=0;s<t.length;s++)"c"!=t[s]?"m"!=t[s]?r.push(pv(coords[t[s]][0],coords[t[s]][1])):(e.push(r),r=[]):(r.push(...microArch(arcPoints[t[s+1]],coords[t[s+2]],t[s+3])),s+=3);return e}function word(t,e,r,s=.12){let o=[];t=t.toLowerCase();let l=40*s;for(let a=0;a<t.length;a++){let i=interpretLetter(alphabet[t[a]]);scaleArrDouble(i,s,pv(0,100)),translateArrDepth2(i,pv(0,0),pv(e+a*(100*s)+a*l,r)),o.push(i)}return o}function microArch(t,e,r){let s=dist(t[0],t[1],e[0],e[1]);return Array(180).fill().map((e,o)=>pv(t[0]+sin(radians(o+90*r))*s,t[1]+cos(radians(o+90*r))*s))}let alphabet={a:"85c15136m53",b:"06c270c0400m43",c:"2c1128",d:"06c1700",e:"2068m34",f:"206m35",g:"2c112854",h:"06m35m28",i:"02m17m68",j:"c13321",k:"06m238",l:"068",m:"60728",n:"6082",o:"c112c170",p:"3c04006",q:"c112c170m48",r:"3c04006m48",s:"2c012m6c270",t:"02m17",u:"0c1332",v:"072",w:"06482",x:"08m26",y:"047m42",z:"0268",0:"c112c170",1:"017m68",2:"c0400mc2428",3:"6c270c0400",4:"035m17",5:"6c270302",6:"236853",7:"026m35",8:"c040c012mc270c242",9:"652035"," ":""};function prepareWords(){let t=[];return t.push(word("art blocks",20,worldSpaceDims[1]-105)),t.push(word("Daniel Calderon arenas",.25*worldSpaceDims[0]-135,worldSpaceDims[1]-105)),t.push(word("marfa yucca",.5*worldSpaceDims[0]-92,worldSpaceDims[1]-105)),t.push(word("2022",.75*worldSpaceDims[0]-142,worldSpaceDims[1]-105)),t.push(word("generative edition",worldSpaceDims[0]-315,worldSpaceDims[1]-105)),t}function drawWords(t){t.forEach(t=>{t.forEach(t=>{t.forEach(t=>{drawWord(t)})})})}function drawWord(t){strokeCap(ROUND),strokeJoin(ROUND),noFill(),stroke(textColor),strokeWeight(2*globalScaler),beginShape(),t.forEach(t=>{vertex(t.x*globalScaler,t.y*globalScaler)}),endShape()}let grid=createGrid(),showWords=!1;function setup(){scaleAgnosticCanvas(),targetBoxes=createTargetBoxes(),createRooms(),prepareYuccas(),prepareColors(),words=prepareWords(),rooms.forEach((t,e,r)=>{fitToTargetBox(targetBoxes[e],e)}),createFlowerPower(),noLoop()}