Runstantで試すはこちら
-
http://goo.gl/1MVVQW 等高線プロットの練習版
-
http://goo.gl/T07VmQ WebWorker版
-
http://goo.gl/zoIq8R 劇重注意版
Runstantで試すはこちら
http://goo.gl/1MVVQW 等高線プロットの練習版
http://goo.gl/T07VmQ WebWorker版
http://goo.gl/zoIq8R 劇重注意版
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); |