幾何学的な性質を考えに入れて図形を描くときは、例えば、或る点から直線に垂線を引くとするとき、垂線と直線とが交わる交点の座標計算が必要です。ここで、幾つかの図形要素に数学的な算法と関連つけるように型の定義を決めることにしました(表11.2)。考え方としては、前項で説明した複素数の扱いを拡張して、複数の数の集合を一つの変数名として、見掛け上の代数計算式に使うようにしたものです。ここでの代数式使う演算子は、普通の代数式で使う加減乗除記号の他に、論理積・論理和、さらには二つの図形要素間に直線を引く演算なども定義しました。これらの演算子に行わせる演算は、幾何学的な意味合いを持たせました。二次元、三次元の型の変数は、代入文で左辺に使われたとき、その変数の作図コマンドとなるようにG-Basicを設計してありますので、作図用のコマンドは表11.1以外には特に増やす必要がないようにしてあります。次のページに例示した図11.1は、三角形の外接円を求めるプログラムと、その結果の作図を例示したものです。短い文ですので、論理を追いかけることは簡単であると思います。
表11.2 図形要素を変数扱いをするときのG-Basicの型
番 号 |
型 の 名 前 |
寸 法 |
内 容 |
型宣言文 |
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 |
備考:寸法とは、実数が何個で構成されているかの数を云います。実数一個の記憶単位は、標準で倍精度を扱う8バイトを指します。 |
2010.11 橋梁&都市PROJECT |