之前我們講了正三角形運算規則下的圖形編程。
它有3種運算規則,如果我們使用4種運算規則,會有什麼情況發生呢?
下面,我定義了一個正方形運算規則。
大家可以想象一個正方形或者十字。
①0代表什麼都沒發生
②-2代表向上
③+2代表向下
④-1代表向左
⑤+1代表向右
現在我們隨便輸入一些數字,讓它們使用上面的任一規則,看最後會發生什麼?
OK,我們預設了這幾組數字。
第一組:1、3、5、7
第二組:1、2、6、9
第三組:1、2、4、6
第四組:5、5、6、6
第五組:3、4、5、6
現在開始:
第一組:
第二組:
第三組:
第四組:
第五組:
你們一會兒可以複製代碼,自己玩,只要顯示器夠大,理論上可以有無限多的組合。
(新建一個文本文檔,複製下面的代碼,然後保存退出,把文件名後綴改成.html,用瀏覽器打開,就可以執行程序了)
代碼如下:
輸入數字:
<button>確定/<button>
<canvas>
function p(a,b,c,d){
var r=20;
var s=30;
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, 20, 20);
cxt.fill();
for(x1=-2;x1<3;x1++){
for(x2=-2;x2<3;x2++){
for(x3=-2;x3<3;x3++){
for(x4=-2;x4<3;x4++){
var x=x0
+(
(x1%2)*a+
(x2%2)*b+
(x3%2)*c+
(x4%2)*d
)*s;
var y=y0
+(
parseInt(x1/2)*a+
parseInt(x2/2)*b+
parseInt(x3/2)*c+
parseInt(x4/2)*d
)*s;
cxt.beginPath();
cxt.fillStyle ="#000000";
cxt.fillRect(x, y, 20, 20);
cxt.closePath();
cxt.fill();
}
}
}
}
}
閱讀更多 數學與編程 的文章