二つ上の段落で引用した文章表現では、文字A, B, C,…は、「点を区別する記号に使う」と宣言しています。この宣言に先立って「点とはどういうものか」の定義を必要としています。コンピュータに理解させる手順は、型の約束(定義)をあらかじめ決めておいて、型宣言文を使って、「この変数名はこの型で使います」とコンピュータに教えます。普通のコンピュータ言語で数を扱うときは、数を型で分類します。数学の分類では単純に整数、実数程度の区別で済ませますが、コンピュータの場合には数を表現するビットの使い方によって、1バイト型、2バイト型、4バイト型、8バイト型などの種類があり、C言語では、さらに符号付・符号無しの区別もあります。文字を使った代数式に、型の違う数を代入すると、計算結果が変わることがありますので、型と計算の約束を対にして理解しなければなりません。やや高度の数として、FORTRANは、複素数型を使うことができます。この中身は二つの実数ですが、幾何学的な二次元の点の性質を持っていながら、代数式では一つの変数名で使うことができます。複素数型の考え方を拡張して、筆者は、計算幾何学でも、直線や平面を含めて、文字変数で扱うように、型と計算の約束を決めたコンピュータ言語GBASIC、を提案することにしました(表2.1)。例えば、点と直線について言えば、平面幾何と立体幾何とでは、別の型を考えます。これらの型は、整数・実数・文字を除き、すべて、図に描いて示すことができる図形要素として定義しました。
型番号 |
型の名前 |
寸法* |
内 容 |
型宣言文 |
1 |
整数 |
1 |
8 バイト長 |
DEFINT |
2 |
実数 |
1 |
8 バイト長 |
DEFSNG |
3 |
文字列 |
2 |
16 バイトの固定長 |
DEFSTR |
11 |
二次元の点 |
2 |
x,y(点の座標) |
DEF2PT |
12 |
二次元の直線 |
3 |
a,b,c (直線式 ax+by+c=0の定数部 |
DEF2LN |
13 |
二次元の円 |
3 |
x,y,r (円の中心と半径 |
DEF2CR |
14 |
二次元の矩形 |
4 |
x0,y0,a,b (中心座標と2a×2bの寸法) |
DEF2BX |
15 |
二次元の線分 |
4 |
x1,y1,x2,y2 (始点と終点の座標 |
DEF2ED |
16 |
二次元の変換行列 |
6 |
座標系を表す2×3 のマトリックス |
DEF2TR |
21 |
三次元の点 |
3 |
x,y,z (点の座標) |
DEF3PT |
22 |
三次元の直線 |
6 |
x0,y0,z0,u,v,w(点の座標と向き) |
DEF3LN |
23 |
三次元の平面 |
4 |
a,b,c,d(面方程式 ax+by+cz+d=0の定数部) |
DEF3PL |
24 |
三次元の球 |
4 |
x0,y0,z0,r(球の中心と半径 |
DEF3SP |
25 |
三次元の直方体 |
6 |
x0,y0,z0,a,b,c (中心座標と2a×2b×2cの寸法) |
DEF3BX |
26 |
三次元の線分 |
6 |
x1,y1,z1,x2,y2,z2
(始点と終点の座標) |
DEF3ED |
27 |
三次元の変換行列 |
12 |
3×4 のマトリックス |
DEF3TR |
*備考:ここでの寸法とは、実数が何個で構成されているかの数を云います。実数1個の記憶単位は、8バイです。なお、CPUが16ビット時代のパソコンでは4バイト単位でした。 |
2008.2 橋梁&都市PROJECT |