目次ページ  前ページ  次ページ

3. 図形要素間の演算

3.7 干渉の計算


3.7.2 干渉結果の性質を通知するパラメータが別に要ること

 図形的な性質が強い線分同士の干渉を求めると、必ずしも線分の有限区間で交わらない場合があり、線分を伸ばしたその延長で交わる場合も求める必要があります。この区別をすることは、位相幾何学的な性質を判断することですので、解としての交点データとは別のパラメータを考えます。コンピュータのCPUでは、レジスタの演算で何かの例外が発生したときの通知方法が種々工夫されています。あるビット位置のon/offを通知情報として利用します。ビットをonにすることを俗にFLAG(旗)を立てると言います。同じようなテクニックは、エラーが起きたときにエラー番号を通知して、障害を部分的に抑えるように設計します。GBASICでは、干渉の演算結果の通知情報に、GBASIC側で用意したシステム変数FLAGを参照できるようにしました。これは引き数無しの関数扱いであって、代入文の左辺値に使うことはできません。例えば、二次元線分の交差では、交差が求まった場合(FLAG=0)以外に、「1線分の延長で交わる・2線分の延長で交わる・向きが同じで平行である・向きが反対で並行である・向きが同じで重なる・離れている、など」の通知にFLAGに0以外の数が入ります。普通のコンピュータ言語を使って干渉の計算をするときは、やや複雑はサブプログラムを幾つか準備します。GBASIC本体を作成するソースコードには多くのサブプログラムを使っています。GBASICのユーザインタフェースでは、サブプログラムが演算子を使う代数式の裏に埋め込まれていますので、使いやすくなっています。ただし、距離または長さの計算は、スカラー値で結果を返す組込み関数DIS()で用意しました。
2008.3 橋梁&都市PROJECT

前ページ  次ページ