note012:曼荼羅図の描き方

2014年11月17日


 学校では「マイナスの数同士を掛け合わせるとプラスになる」と習った。つまり、ある負の数を二乗すると、必ず正の数になる。たとえば「-√2×-√2=2」のようにね。だから「-2」の平方根なんて存在しないはずだ。ところが、虚数(imaginary number)という数の概念では「-2」の平方根は「√2i」となる。「a+bi」と表す数を複素数(complex number)と呼ぶ。なにがなんだかよくわからないが、三次方程式を解く際など、世の中には虚数という数の概念を導入しないと解けない問題もあるみたいだ。曼荼羅図も複素数を使う…といっても「ガウス平面」上に展開すれば、通常のグラフと同じく、X座標、Y座標で表すことができる。簡単な計算式が生み出す曼荼羅図は摩訶不思議。「色即是空、空即是色」なり。


Canvasに未対応です。

煩悩(?)の数を入力(1~999)

JavaScript

<script>
window.onload = function(){
	var canvas = document.getElementById('myGraph');
	if (! canvas || ! canvas.getContext){return false;};
	ctx = canvas.getContext('2d');
	widthX = canvas.width;
	heightY = canvas.height;
	mandara();
};
function mandara(){
	S = document.getElementById("Scale").value;
	Step = 5;
	for (Y=0; Y < heightY; Y+= Step) {
		for (X=0; X < widthX; X+= Step) {
			Z = (((X-widthX/2)*S)*((X-widthX/2)*S)+((Y-heightY/2)*S)*((Y-heightY/2)*S)) % (255*255*255);
 			R = Math.floor((Z/(255*255)) % 255);
			G = Math.floor((Z/255) % 255);
			B = Math.floor((Z) % 255);
			myColor = "rgb("+ R +"," + G +"," + B +")";
			ctx.fillStyle = myColor;
			ctx.fillRect(X, Y, Step, Step);
			//console.log(myColor);
		};
	};
};
// スケールの拡大(▲)
function scaleUp(){
		myScale = document.getElementById("Scale").value;
    if(myScale < 999){
			myScale ++;
		}
    document.getElementById("Scale").value = myScale;
}
// スケールの縮小(▼)
function scaleDown(){
		myScale = document.getElementById("Scale").value;
    if(myScale > 1){
			myScale --;
		}
    document.getElementById("Scale").value = myScale;
}
</script>