HTML5 Canvasで簡単な論理回路図を描いてみた
今回は、HTML5 CanvasのAPIを利用し、伝統的な論理ゲート記号によって簡単な論理回路図を描く手順について書き留める。 同じ論理ゲート記号を複数回使うことになるので、それらの論理ゲート記号を描く機能の一部をまずは 函数 かんすう 化してみた。 ここでは、オブジェクトを初期化するための特別な函数であるコンストラクター函数と呼ばれるものを使ってみた。コンストラクター函数はまるでクラスのように働き、これによって同じ種類の異なるオブジェクトを量産することができるようになる。 NANDゲート記号をコンストラクター函数化 実用論理ゲートだけによって基本論理ゲートと同じ機能を実現できることを示す論理回路図を描くため、NANDゲート記号のソースコードをコンストラクター函数にまとめてみた。 コンストラクター函数の引数としては、第1と第2に座標を、第3には輪郭線の太さを、第4には指定することができるようにしてみた。 こうすることで異なる属性を持つ複数のオブジェクトを一つの雛形から描画することができるようになる。 コンストラクター函数NoAndGateのソースコードは次のとおり。使っているスクリプト言語はJavaScript。 <script> /* コンストラクター函数でNoAndGateオブジェクトを定義 引数にはx座標, y座標, 輪郭線の太さ, 輪郭線の色 */ function NoAndGate(argX, argY, lineW, argColor) { //座標のプロパティ this.x = argX; this.y = argY; //輪郭線の太さのプロパティ this.width = lineW; //本体部分の輪郭線の色のプロパティ this.color = argColor; /* 2つの頭部直線先端と1つの尾部直線先端の座標を表わすプロパティ hornPoint1: 頭部(左端)の上の直線の先端の座標 hornPoint2: 頭部(左端)の下の直線の先端の座標 tailPoint: 尾部(右端)の先端の座標 */ this.hornPoint1X = x+0; this.hornPoint1Y = y+11; this.hor...