3.9 図形要素間の算法

前のページ次のページ

 純粋の幾何学的要素の点・直線・面相互の間には代数的な意味での加減乗除の算法を定義できませんが、図形要素として提案した型を使うと、型同士にある種の算法を提案することができます。この算法は、前提として、論理的というよりも感覚的な理解が必要です。例えば、平面図形の点を二つの変数記号P1、P2で表したとき、二つの変数を演算子で結んだ形式的な代数式を考えます;

P1+P2、  P1−P2、  P1*P2、  P1**P2、P1@P2

上の表現式は、G-BASICで採用している方法です。このように表した代数式が、幾何学的に何を意味するかを感覚的に想像することから始めます。これらは順に、二つのベクトルとしての和、差、内積、外積、そして最後はP1からP2を結ぶ線分となる約束にしてあります。図形要素の型をG-BASICでは13種類決めましたので、二つの型同士の算法の種類が何通りもできます。この算法に使う演算子の基本機能が、表3.2に示してあります。

 代数式で数の加減乗除の計算をするとき、算法で許されない唯一の例外は0で割ることです。コンピュータで数値計算をさせる場合には、内部で扱う数の表現方法の制限で、オーバーフロー(overflow)とアンダーフロー(underflow)とが起こることがありますが、これは数値計算の例外であるとして、普通はエラーとします。図形要素の計算をするときには、算法が成り立たない型の組合せがたくさんあります。また、数値計算上のエラーが起きる場合であっても幾何学的な意味を伴うので、適切な通知方法を考えなければなりません。例えば、線分と線分との交差は、二つの線分の論理積と考え、G-BASICでは演算子記号に「&」を使います。しかし、線分が離れていれば意味のある交点がありません。線分を延長すれば交点が求まる場合もあります。この他に、平行である、接している、などの特殊な干渉状態を調べる必要もあります。演算の結果、判定される「状態」そのものを通知するため、G-BASICではFLAGと名付けたシステム定数を用意しました。ユーザは、この数値を調べることで、例外が起きた状態を知ることができます。このような例外を考えておくことが、計算幾何学において最もノウハウを必要としているところです。

次のページ