正六邊形運算規則下的圖形編程

之前我們講了正方形運算規則下的圖形編程。

正六邊形運算規則下的圖形編程

它有4種運算規則,如果我們使用6種運算規則,會有什麼情況發生呢?


下面,我定義了一個正六邊形運算規則。


大家可以想象一個正六邊形。


①0代表什麼都沒發生


②-3代表向左上


③+3代表向左下


④-1代表向右上


⑤+1代表向右下


⑥+2代表向下


⑦-2代表向上


現在我們隨便輸入一些數字,讓它們使用上面的任一規則,看最後會發生什麼?


OK,我們預設了這幾組數字。

第一組:2、6、7

第二組:2、3、8

第三組:2、3、12

第四組:5、6、7

第五組:3、5、7


現在開始:


第一組:

正六邊形運算規則下的圖形編程

第二組:

正六邊形運算規則下的圖形編程

第三組:

正六邊形運算規則下的圖形編程

第四組:

正六邊形運算規則下的圖形編程

第五組:

正六邊形運算規則下的圖形編程

你們一會兒可以複製代碼,自己玩,只要顯示器夠大,理論上可以有無限多的組合。


(新建一個文本文檔,複製下面的代碼,然後保存退出,把文件名後綴改成.html,用瀏覽器打開,就可以執行程序了)


代碼如下:



輸入數字:


<button>確定/<button>


<canvas>



function p(a,b,c,d){


var r=10;

var s=10;

var x0=700;

var y0=800;


var br=document.createElement("br");

document.body.appendChild(br);


var v=document.getElementById("myCanvas");

var cxt=v.getContext("2d");


cxt.fillRect(x0, y0, 1.5*r, 1.5*r);

//cxt.arc(x0, y0, r, 0, 2*Math.PI, true);

cxt.fill();


for(x1=-3;x1<4;x1++){

for(x2=-3;x2<4;x2++){

for(x3=-3;x3<4;x3++){

for(x4=-3;x4<4;x4++){


var x=x0

+(

((x1+4)%2-((x1%2)*parseInt(x1/2))*2 )*Math.sqrt(3)*a+

((x2+4)%2-((x2%2)*parseInt(x2/2))*2 )*Math.sqrt(3)*b+

((x3+4)%2-((x3%2)*parseInt(x3/2))*2 )*Math.sqrt(3)*c+

((x4+4)%2-((x4%2)*parseInt(x4/2))*2 )*Math.sqrt(3)*d

)*s;


var y=y0

+(

(x1-parseInt(x1/3)*2)*a+

(x2-parseInt(x2/3)*2)*b+

(x3-parseInt(x3/3)*2)*c+

(x4-parseInt(x4/3)*2)*d

)*s;


cxt.beginPath();

cxt.fillStyle=color16();

cxt.fillRect(x, y, 1.5*r, 1.5*r);

//cxt.arc(x, y, r, 0, 2*Math.PI, true);

cxt.closePath();

cxt.fill();

}

}

}

}

}


function color16(){

//十六進制顏色隨機

var r = Math.floor(Math.random()*256);

var g = Math.floor(Math.random()*256);

var b = Math.floor(Math.random()*256);

var color = '#'+r.toString(16)+g.toString(16)+b.toString(16);

return color;

}



分享到:


相關文章: