JavaScript
フラクタル図形その22015/12/24
canvasを用いてフラクタル図形を描画。
赤線を再帰的に繰り返すことで黒線の図形が描画できる。
var cvr = Math.PI/180; var canvas = document.getElementById("cv"); var X,Y,R; function drawLine(r,l){ ctx.beginPath(); ctx.moveTo(X, Y); ctx.lineTo(X=X + l*Math.cos((R+r) * cvr), Y=Y - l*Math.sin((R+r) * cvr)); ctx.stroke(); } function drawFrac1(r, l){ R += r; if (l > 3) { drawFrac1(90, l / 2); drawFrac1(-90, l / 2); drawFrac1(-90, l / 2); drawFrac1(90, l / 2); } else drawLine(0,l); } function drawFrac2(r, l){ R += r; if (l > 3) { drawFrac2(60, l / 2); drawFrac2(-120, l / 2); drawFrac2(60, l / 2); } else drawLine(0,l); } function drawFrac3(r, l){ R += r; if (l > 3) { drawFrac3(60, l / 2); drawFrac3(-120, l/2); drawFrac3(0, l/2); drawFrac3(120, l / 2); R-=60; } else drawLine(0,l); } if (canvas.getContext) { var ctx = canvas.getContext("2d"); ctx.strokeStyle = "#000"; X = 100; Y = 150; R = 0; drawFrac1(0, 150); X = 300; Y = 150; R = 0; drawFrac2(0, 150); X = 500; Y = 150; R = 0; drawFrac3(0, 150); ctx.strokeStyle = "#f00"; X = 100; Y = 150; R = 0; drawLine(90, 50);R+=90; drawLine(-90, 50);R-=90; drawLine(-90, 50);R-=90; drawLine(90, 50); X = 300; Y = 150; R = 0; drawLine(60, 50);R+=60; drawLine(-120, 50);R-=120; drawLine(60, 50); X = 500; Y = 150; R = 0; drawLine(60, 50);R+=60; drawLine(-120, 50);R-=120; drawLine(0, 50); drawLine(120, 50); }