Skip to content

Instantly share code, notes, and snippets.

@kjunichi
Forked from Akiyah/jibanyan_equation
Last active August 29, 2015 14:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kjunichi/7c5b14ba9538711c3976 to your computer and use it in GitHub Desktop.
Save kjunichi/7c5b14ba9538711c3976 to your computer and use it in GitHub Desktop.
JavaScriptで動かしてみました(力技orz)
var cs = document.getElementById("world");
var ctx = cs.getContext("2d");
var csWidth = 400;
var csHeight = 400;
var imagedata = ctx.createImageData(csWidth, csHeight);
for(var i = 0; i<csWidth*csHeight*4;i++) {
imagedata.data[i]=255;
}
jibanyan_equation = function(x,y) {
return Math.min(
Math.max(
Math.min(
1-(x/108)*(x/108)-(y/94)*(y/94),y
),
Math.min(
1-((Math.abs(x)-119)/103)*((Math.abs(x)-119)/103)-((y-56)/86)*((y-56)/86),
1-((Math.abs(x)-15)/77)*((Math.abs(x)-15)/77)-((y-119)/100)*((y-119)/100)),
1-((Math.abs(x)-42)/66)*((Math.abs(x)-42)/66)-(y/55)*(y/55),
Math.min(55+y,51-Math.abs(x),-y)),3*Math.abs(y-100)-2*(x-75)) *
Math.min(Math.min(Math.max(Math.min(1-(x/106)*(x/106)-(y/92)*(y/92),y),Math.min(1-((Math.abs(x)-119)/101)*((Math.abs(x)-119)/101)-((y-56)/84)*((y-56)/84),((Math.abs(x)-99)/40)*((Math.abs(x)-99)/40)+((y-54)/86)*((y-54)/86)-1,92-Math.abs(x)),1-((Math.abs(x)-42)/64)*((Math.abs(x)-42)/64)-(y/53)*(y/53)),Math.min(((Math.abs(x)-52)/26)*((Math.abs(x)-52)/26)+((y+28)/26)*((y+28)/26)-1,((Math.abs(x)-51)/13)*((Math.abs(x)-51)/13)+(y/13)*(y/13)-1,Math.max(Math.abs(x)-51,y))),Math.pow(Math.abs(x/51+10/51*Math.sin(Math.pow(Math.abs(y/61.2),1.2)*Math.PI*(7/2))),2/3)+Math.pow(Math.abs(y/61.2),(2/3))-1) *
Math.min(1-(x/32)*(x/32)-((y+30)/32)*((y+30)/32),
1-((Math.abs(x)+5)/22)*((Math.abs(x)+5)/22)-((y-18)/22)*((y-18)/22))*
Math.min(1-((Math.abs(x)-18)/20)*((Math.abs(x)-18)/20)-((y+10)/20)*((y+10)/20),((Math.abs(x)-20)/22)*((Math.abs(x)-20)/22)+((y+7)/20)*((y+7)/20)-1) *
(1-((Math.abs(x)-51)/11)*((Math.abs(x)-51)/11)-(y/11)*(y/11));
}
var xmin=-150;
var xmax=150;
var xstep=12000;
for(var y = -150;y < 150 ; y = y+(xmax-xmin)/xstep ) {
var iy = csHeight-((y-xmin)/(xmax-xmin)*csHeight)|0;
for(var x = -150; x < 150; x = x+(xmax-xmin)/xstep ) {
z=jibanyan_equation(x,y);
var ix = ((x-xmin)/(xmax-xmin)*csWidth)|0;
if(z*z<.1) {
imagedata.data[(ix+iy*csWidth)*4]=0;
imagedata.data[(ix+iy*csWidth)*4+1]=0;
imagedata.data[(ix+iy*csWidth)*4+2]=0;
imagedata.data[(ix+iy*csWidth)*4+3]=255;
//console.log(ix,iy,z);
} else {
/*
imagedata.data[(ix+iy*csWidth)*4]=255;
imagedata.data[(ix+iy*csWidth)*4+1]=255;
imagedata.data[(ix+iy*csWidth)*4+2]=255;
imagedata.data[(ix+iy*csWidth)*4+3]=255;
*/
}
}
}
ctx.putImageData(imagedata,0,0);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment