Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data:text/html,<html><head><script type="text/javascript">
- var meta={};
- meta.sides=6;
- meta.alpha=[0.2,0.4];
- meta.tris=[8,160];
- var outc;
- var ctx;
- var csize;
- var cmid;
- var tris=[];
- var ext=0;
- function zd(min,max) {return ((Math.random()*(max-min))+min);}
- function zi(min,max) {return Math.floor((Math.random()*(max+1-min))+min);}
- function zip(min,max,exp) {return Math.floor((Math.pow(Math.random(),exp)*(max+1-min))+min);}
- function rotate(v,a)
- {
- v=[v[0]-cmid,v[1]-cmid];
- var lsin=Math.sin(a);
- var lcos=Math.cos(a);
- return [cmid+(lcos*v[0])-(lsin*v[1]),cmid+(lsin*v[0])+(lcos*v[1])];
- }
- function color()
- {
- return ["rgba(",zi(143,175),",",zi(175,215),",",zi(223,255),",",zd(meta.alpha[0],meta.alpha[1]),")"].join("");
- }
- function triangle()
- {
- ctx.fillStyle=color();
- if(tris.length<1)
- {
- if(zd(0,1)<-1)
- {
- var lt=[[cmid,cmid],[0,0],[0,0]];
- var angle=meta.angle*(Math.pow(zd(0.1,0.9),3)+zd(0.01,0.1));
- var length=zd(1,cmid);
- lt[1]=rotate([cmid,cmid+length],angle);
- lt[2]=rotate([cmid,cmid+length],0-angle);
- ext=(length*2)/csize;
- for(var i=0;i<meta.sides;i++)
- {
- var la=meta.angle*i;
- var ltr=[rotate(lt[0],la),rotate(lt[1],la),rotate(lt[2],la)];
- ctx.beginPath();
- ctx.moveTo(ltr[0][0],ltr[0][1]);
- ctx.lineTo(ltr[1][0],ltr[1][1]);
- ctx.lineTo(ltr[2][0],ltr[2][1]);
- ctx.fill();
- }
- tris.push(lt);
- }
- else
- {
- var lengths=[zd(cmid/3,cmid),zd(1,cmid/2)];
- var vs=[[cmid,cmid+lengths[0]],rotate([cmid,cmid+lengths[1]],meta.angle/2)];
- ctx.beginPath();
- ctx.moveTo(vs[0][0],vs[0][1]);
- for(var i=0;i<meta.sides;i++)
- {
- var la=meta.angle*i;
- var vrs=[rotate(vs[1],la),rotate(vs[0],la+meta.angle)];
- ctx.lineTo(vrs[0][0],vrs[0][1]);
- ctx.lineTo(vrs[1][0],vrs[1][1]);
- }
- ctx.fill();
- tris.push([[cmid,cmid+lengths[0]],[cmid-(lengths[1]/2),cmid-(lengths[1]/2)],[cmid+(lengths[1]/2),cmid-(lengths[1]/2)]]);
- }
- }
- else
- {
- if(zd(0,1)<0.8)
- {
- var lt=[[cmid,cmid],[0,0],[0,0]];
- var scale=cmid;
- while(true)
- {
- var btr=tris[(tris.length<=1?0:zip(0,tris.length-1,0.3))];
- var vecs=[[btr[1][0]-btr[0][0],btr[1][1]-btr[0][1]],[btr[2][0]-btr[0][0],btr[2][1]-btr[0][1]]];
- var bc=[zd(0,1),zd(0,1)];
- if(bc[0]+bc[1]>1)
- {
- bc=[1-bc[0],1-bc[1]];
- }
- var bv=[btr[0][0]+(vecs[0][0]*bc[0])+(vecs[1][0]*bc[1]),btr[0][1]+(vecs[0][1]*bc[0])+(vecs[1][1]*bc[1])];
- var lscale=(scale*Math.pow(zd(0.2,1),2))/Math.pow(tris.length,0.3);
- var dvs=[[lscale*zd(-1,1),lscale*zd(-1,1)],[lscale*zd(-1,1),lscale*zd(-1,1)]];
- lt[1]=[bv[0]+dvs[0][0],bv[1]+dvs[0][1]];
- lt[2]=[bv[0]+dvs[1][0],bv[1]+dvs[1][1]];
- var ltds=[[lt[1][0]-cmid,lt[1][1]-cmid],[lt[2][0]-cmid,lt[2][1]-cmid]];
- if(scale<1)
- {
- console.log(bv);
- console.log(ltds);
- var n=window.blahblahblah();
- }
- if(Math.sqrt((ltds[0][0]*ltds[0][0])+(ltds[0][1]*ltds[0][1]))>cmid)
- {
- scale*=0.9;
- continue;
- }
- if(Math.sqrt((ltds[1][0]*ltds[1][0])+(ltds[1][1]*ltds[1][1]))>cmid)
- {
- scale*=0.9;
- continue;
- }
- lt[0]=bv;
- break;
- }
- var lt2=[[csize-lt[0][0],lt[0][1]],[csize-lt[1][0],lt[1][1]],[csize-lt[2][0],lt[2][1]]];
- tris.push(lt);
- for(var i=0;i<meta.sides;i++)
- {
- var la=meta.angle*i;
- var ltr=[rotate(lt[0],la),rotate(lt[1],la),rotate(lt[2],la)];
- ctx.beginPath();
- ctx.moveTo(ltr[0][0],ltr[0][1]);
- ctx.lineTo(ltr[1][0],ltr[1][1]);
- ctx.lineTo(ltr[2][0],ltr[2][1]);
- ctx.fill();
- var ltr2=[rotate(lt2[0],la),rotate(lt2[1],la),rotate(lt2[2],la)];
- ctx.beginPath();
- ctx.moveTo(ltr2[0][0],ltr2[0][1]);
- ctx.lineTo(ltr2[1][0],ltr2[1][1]);
- ctx.lineTo(ltr2[2][0],ltr2[2][1]);
- ctx.fill();
- }
- }
- else
- {
- var bvext=zd(0,ext);
- var lt=[[cmid,cmid+(bvext*cmid)],[0,0],[0,0]];
- var angle=meta.angle*(Math.pow(zd(0.05,0.8),3)+zd(0.001,0.03));
- var end=zd(0,1);
- ext=Math.max(ext,end);
- end*=cmid;
- lt[1]=rotate([cmid,cmid+end],angle);
- lt[2]=rotate([cmid,cmid+end],0-angle);
- for(var i=0;i<meta.sides;i++)
- {
- var la=meta.angle*i;
- var ltr=[rotate(lt[0],la),rotate(lt[1],la),rotate(lt[2],la)];
- ctx.beginPath();
- ctx.moveTo(ltr[0][0],ltr[0][1]);
- ctx.lineTo(ltr[1][0],ltr[1][1]);
- ctx.lineTo(ltr[2][0],ltr[2][1]);
- ctx.fill();
- }
- tris.push(lt);
- }
- }
- }
- function run()
- {
- tris=[];
- ext=0;
- meta.angle=(Math.PI*2)/meta.sides;
- outc=document.getElementById("out");
- csize=Math.max(64,Math.min(window.innerWidth,window.innerHeight)-32);
- cmid=Math.floor(csize/2);
- csize=cmid*2;
- outc.setAttribute("width",csize+"px");
- outc.setAttribute("height",csize+"px");
- ctx=outc.getContext("2d");
- ctx.clearRect(0,0,csize,csize);
- meta.tn=zip(meta.tris[0],meta.tris[1],0.5);
- for(var t=0;t<meta.tn;t++)
- {
- triangle();
- }
- }
- window.requestAnimationFrame(run);
- </script></head><body style="background:black;" onkeydown="run()"><canvas id="out" width="1px" height="1px" style="display:block;margin:auto;"></canvas></body></html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement