平面幾何作図ソフトウエアについて
阿原一志
明治大学理工学部・准教授

概要
パソコン上で平面幾何の作図をするソフトは一般に IGS（インタラクティ
ブ・ジオメトリー・ソフトウエア）と呼ばれます．大きな特徴としては，マウスのやさしい操作で正確な作図ができることと，作図をしたあとに（作図を崩さずに）頂点の位置を変更することができることです．国内外でさまざまな種類の作図ソフトウエアが開発されています．筆者が開発した KidsCindyもその１つです．IGS を動かす数学的な原理と数学教育への応用の可能性について論説します．

1

作図ソフトウエアとはどういうソフトウエアか

作図ソフトウエアとは，パソコンの上で，マウスの簡単な操作によって平面幾何や立体幾何の作図をすることができるツールです．共通の性質が３つあります．一つ目は作図の入力が直感的で分かりやすいということ．二つ目は作図手順がコンピュータ内に記録されるので，一度作図を行った後に（制約のない）頂点を自由に動かすことができること．三つ目は，非自明な幾何学的性質（３点が一直線上にならぶ＝共線，３直線が一点で交わる＝共点）を発見することができること．
（これを機械証明，自動定理証明などといいます．
）
細かい機能の差はあるものの，このような作図ソフトは有償・無償のものをあわせて 100 種類以上あるといわれています．筆者の開発した KidsCindy(キッズシンディ) もそのような無償のソフトウエアの 1 つで，筆者のホームページから自由にダウンロードすることができますし，また MathLibre（旧 KNOPPIX/MATH）という数学ソフトウエアを蒐集した DVD にも収録されています．
たとえば次の作図をしてみましょう．
「三点 A,B,C を平面上に自由に与えます．AB の中点を D，BC の中点をE，CD と AE の交点を G とします．
」
これはいわずと知れた，三角形の重心の作図です．点 G は三角形 ABC の重心になっています．このようなものはどの作図ソフトでも簡単に作図できますが，作図ソフトで描いた作図は，図を作った後に頂点 A,B,C を自由に動かすことができます．
（中点や重心は従属的に決まる点なので自由には動かせません．
）頂点を動かすと作図全体が動きます．
AD

B

2GEC

数学の問題とコンピュータの問題

作図ソフトウエアで取り扱うのは平面幾何ですが，これは抽象的で理想的な対象であるといえます．ここで理想的といっているのは，つまり頂点とは大きさがないものであり，直線とは長さはあるが巾がないものであり，また数といえば実数全てを表すものであるわけです．また，１辺の長さが１の正方√形の対角線の長さは2 ですが，これは「次乗すれば２になる数」としての√2 であって，理想的な存在であるといえます．
．
一方で，コンピュータが扱えるのは精度（有効数字）と範囲（オーバーフロー，アンダーフロー）がある数に限られ，全ての実数を扱えるわけでは√ありません． 2 を実数として扱うのであれば，概数で扱うことしかできません．
このことから，コンピュータで数学を扱うならば，理想的な状況をできるだけ担保するための数学理論が必要であることがわかります．コンピュータの黎明期からコンピュータと数学が折り合うための数学からの歩み寄りは行われてきました．
ここでは深く説明しませんが，数値計算の精度に関しては「精度保証計算」という理論があり，まるめ誤差などを並行して計算することにより，想定される誤差の最大値を数学的に評価できます．
√2 を「次乗すれば２になる正の数」として扱う方法には数式処理による計算があります．ここでは有理数係数の多項式をベースにして考えて，たと√
えば 2 であれば「x2 − 2 = 0, x > 0」という方程式，不等式を組み合わせてこれをひとつの数と考える（色々な考え方がありますので，これはその一例ですが）などの方法が考えられます．
ここでは，幾何学ソフト特有の「理想的な状況を担保するための理論」について説明しましょう．

3

作図ソフトウエアの内部構造

先ほどの重心の作図では，最初に与えられるのは三点 A,B,C の座標です．そこから他の作図点・作図直線を構成していくわけです．作図ソフトウエアでは作図手順を記録するという観点から，これを次の図のような有向グラフ構造で実現します．
点A点B点C

中点点D

中点点E結ぶ

直線 a

結ぶ

直線 b交点

点G

内部構造としては「オブジェクト」と「モジュール」からなっています．
オブジェクトとは点・直線・円などの構成要素であり，モジュールとは「中点をとる」「2 点を結ぶ」「2 直線の交点をとる」など作図の作業に当たる部
分です．
先ほどの重心の作図の場合では上の図のようにオブジェクトとモジュールをつなげて記録します．ここで四角で囲まれたものがオブジェクトで丸で囲まれたものモジュールにあたります．
このようなデータをコンピュータ内で保持しておいて，実際に A,B,C の座標が与えられたときに，この流れ図に従って，すべてのオブジェクト（頂点の座標，直線の方程式の係数）を決定します．この作業を「評価（エバリュエーション）」といいます．
作図を連続的に動かすときには，ユーザがマウスで頂点を動かすたびにこのエバリュエーションを行い，リアルタイムで図を更新します．そのためユーザは自分が作図全体を動かしているような感覚を得ることができるわけです．
このような枠組みさえ分かってしまえば，作図ソフトを構築することは簡単のように思えますが，実際には技術的な問題（トラブル）がたくさんあり，それら問題点を数学の観点から解決していく必要があるのです．ここでは代表的なトラブルについて説明し，そこでどのような数学が使われるかを解説します．

4

連続性の問題と例外を作らない工夫

作図後に頂点を自由に動かせることが作図ソフトに共通の特徴であると述べましたが、そのためにソフトウエアには過酷な条件が課せられます。
そのひとつは、「頂点を自由に動かしたとき、作図全体も連続に動く」ということです。当たり前の機能のように思われるかもしれませんが，作図を連続的に動かしているうちに「図が特別な場合」になってしまうことがあります。簡単ないくつかの例を挙げると、「三角形 ABC」で作図を始めたとしても，頂点 A が辺 BC の上に乗ってしまったり，A=B になってしまったり。

「２直線の交点を求める」と言っているのに２直線が平行になってしまったり一致してしまったりすることもあり得ます。
このようなときにモジュールはどのように判断すればよいでしょうか。
もっとも安易な考え方は「図が特別な場合には例外扱いにして、以降の作図を行わない」ということですが、これはソフトウエア設計の上でもっともしてはいけないことなのです。なぜなら、例外扱いを許すことにするためには，まず「図がどのような範囲のときに例外とするか」を決めなければいけません．たとえば，「２直線が平行になったら交点は求めない」という例外規定を作ったとすると，ぴったり平行のときだけではなく，交点の座標がオーバーフローするときも「だいたい平行」とみなす必要がでてきます．こういう例外規定が積み重なると，「まだまだ図が描けるはず」なのに図の一部が消えてしまったりする現象に繋がります．このような設計はしてはならないのです．
ですから，「できるだけ例外規定は設けない」ような枠組みが必要です．ここでは「無限遠点の取り扱い」と「円と直線の交点」の二つを紹介しましょう。

5

射影平面

無限遠点を有限のものとして取り扱う方法として射影平面というものがあります。これは１９世紀に数学者ポンスレが射影幾何学として確立したものに基づいています。点 (x, y) の代わりに、３つの実数の組 (x : y : z) を考えます。ただし、３つの実数の「比」を考えることとし、(1 : 2 : 3) = (3 : 6 : 9)のように、３つの数の比が等しければ、同じものであるとみなします。また、
当面 (0 : 0 : 0) は考えないことにします。こうした「３つの数の比」全体の集合を P 2 と書くことにします．

P 2 = {(x : y : z) | (x : y : z) ̸= (0 : 0 : 0)}
この集合 P 2 を「平面＋無限遠点集合」とみなす方法があるのです．まず平面上の点については平面上の点 (x, y) ←→ (x : y : 1)と対応をつけます．次に平面上の直線 y = ax + b を考えることにしますが，直線上の点は一般的に (x, ax + b) という座標を持っていることが分かります．
これを P 2 の言葉で言い直すと，(x : ax + b : 1) と表される P 2 の点が直線y = ax + b に対応することが分かります．
ここで， lim を考えるとどうでしょう．比を考えるということから，x→∞lim (x : ax + b : 1) = lim (1 :x→∞x→∞

ax + b 1: ) = (1 : a : 0)xxを得ることができます．つまり，平面における直線 y = ax + b に沿った無限遠点は (1 : a : 0) であることがわかります．
（実は， lim を考えても同じ無x→−∞限遠点に到達することが分かり，直線の両側の無限遠点は P 2 においては同じ点であることが分かります．
）
これらの考察から，(x : y : 0) という形の P 2 の元は無限遠点を表すことが分かります．P 2 の考え方を使えば，２直線 ax + by + c = 0, a′ x + b′ y + c′ = 0の交点は(bc′ − b′ c : ca′ − c′ a : ab′ − a′ b)と与えられます．これは平面上で交わる２直線であれば，その座標を与えます．もし２直線が平行であった場合には ab′ − a′ b = 0 となりますので，無限遠点に交点があることが分かります．
このように射影平面という概念を導入することにより「無限遠点に関する例外規定」を設けずに済むことがわかりました．このようにひとつひとつのトラブルケースに対応するような数学の概念を考えていく作業が必要なのです．

6

複素数の利用次に，円と直線との交点について考察してみましょう．直線 ℓ が固定されていたとして，円 C が動いたとしましょう．
（直線が動いても同じことですが．
）ℓ と C との交点のうちの１つを点 A であると決めたとします．もし，円と直線が離れてしまったとき，点 A はどうなるでしょうか？もちろん平面上には点 A はありえません．
このようなときには複素数を導入するのが適切です．つまり，円と直線が離れてしまったときにも，点 A はなくなってしまわずに，単に「座標成分が複素数になってしまったので表示できない」という扱いにするのです．
（そ2うすると，前の節の内容と合わせると，複素射影平面 P (C) で計算することになります．
）
さらに次のような問題も考えてみましょう．一度円と直線が離れた後，ふたたび円と直線が交わりを持つような図へと動かされたとき，点 A は復活することになります．このとき，「２つの交点のうちのどちらを点 A にするのが適切であるか」という難問があります．このことについて，モジュールでの交点の取り扱いはどのようにすればよいでしょうか？このことについてここで詳細は触れませんが，現在出版準備中の拙著「コンピュータ幾何」ではその種明かしをする予定です．

7

自動定理証明機能

さて，作図ソフトウエアで最大級の難関は，共線，共点をプログラムで判定することです．現在知られている方法は主に２系統あり，KidsCindy では「シンデレラ方式」を採用しています．
まず，作図をしたときに３点が１直線上に並んだり，３直線が一点で交わるような絵が発生することは時たまありえます．私たちが作図プログラムを手にすれば，主に直感による観察によって，画面上での共線・共点が偶然の産物であるか，もしくは幾何学的な必然であるかを証明なしに確信することができます．
（大変不思議な話なのですが，これは実物を目にすれば確かに直感的にわかります．
）
しかしそのことをアルゴリズムとしてソフトウエアに搭載することができるかというと別問題です．このことについて，主に二つの考え方があります．
ひとつは，計算誤差を排して純粋に代数的に解決する方法です．有名な方法としては Wu の方法がよく知られています．もしグレブナー基底を知っている方であれば，それと同じものを考えてもらえればいいと思います．まず最初に，作図に現れるオブジェクトの成分や係数をすべて文字変数とします．そうすると作図手順はこれらの文字変数による代数方程式に書き直すことができます．これらは一般に高次連立方程式になりますが，終結式（リザルタント）を用いて従属的にきまる文字変数について解き，共線や共点にあたる多項式を計算して結論を導く方法がこれにあたります．この手法については研究が進んでおり，多くの例では解決可能ではあるが万能ではないことが知られています．
筆者が日本に紹介した「シンデレラ (Cinderella)」（第 1 版は無償，第 2 版は有償）の作者のコルテンカンプが発表した方法は，代数的な方法とは一線を画するものです．自由に動かせる頂点を微動させて，確率的に共線，共点を判定する方法です．簡単に言うと，もし n 次多項式 f (x) があるとして，それが n + 2 箇所で（ほぼ）0 の値をとるならば，f (x) 自身も（ほぼ）0 だろう，という考え方です．これはかなり有効な方法で，KidsCindy にもこの方法が搭載されており，かなり強力なうえに，判定速度が非常に速いことが利点です．ただしこれにも弱点があって，自由に動かせる頂点の個数が少ないと十分な判定ができないのです．いずれにせよ万能な自動定理証明の方法はまだ知られていませんが，我々が普通に目にするレベルの幾何学の証明でしたらだいたいは判定可能です．

8

数学教育への展開

このような作図ソフトウエアを利用して，海外では教育のツールとしての活用研究がなされています．シンデレラはヨーロッパ教育ソフトウエア賞を受賞しました．残念ながら，日本には作図ソフトウエアをベースとして教育ソフトウエアを広げていこうという教育界の動きは鈍く，このような賞もありません．
自動定理証明機能を使った数学的活動も考えられます．三角形・四角形などからはじめて生徒に自由に作図をさせ，もしソフトウエアが共点や共線のメッセージを出したならば「定理を発見した」ということにして，その証明を考える，という総合的学習です．この活動の実践報告を聞いたこともありますが，生徒間でかなり盛り上がるようで，楽しそうです．
数学教育と作図ソフトウエアで世界的にもっとも有名なものの 1 つは「ジオジェブラ（Geogebra）」（無償）です．ジオジェブラは日本以外の多くの国で教材開発の大きなコミュニティが出来上がっており，国際会議も開かれるほどのワールドワイドなソフトウエアです．
（日本でジオジェブラを使って教育に生かそうと考えている人はごく小数なのが残念です．
）
一方で，日本でソフトウエアをベースとした教材開発のコミュニティがあるのは「グレープス (GRAPES)」くらいです．グレープスはもともとグラフを描画するソフトウエアですが，インタラクティブな操作もできますし作図ソフトウエアと相当の機能を持っています．グレープスについては活発なコミュニティ活動が行われており，大変期待が持てます．しかし全体としては，作図ソフトウエアを通じた数学教材研究の全国規模のコミュニティが少ない日本の現状はとても残念ですし，そのような展開がもっとさまざまにあってもいいのではないかと心底思います．

9

まとめ

数学ソフトウエアは「数学の理想的な状況」「コンピュータの有限の世界」「コンピュータの精度・範囲をできる限り理想的な状況に持ち込むための数学理論」の 3 層から構成されています．特に作図ソフトウエアにはさまざまな特有な現象があり，さまざまな研究がなされています．ここではそのほんの一部分を紹介したに過ぎません．残念ながらこの内容についての日本語による参考書はまだないようです．現在出版準備中の拙著「コンピュータ幾何」
は，この分野の総括的な最初の参考書になると思います．
参考
KidsCindy: http://www11.atwiki.jp/kidscindy/
Geogebra: http://www.geogebra.org/cms/
Cinderella: http://www.cinderella.de/
GRAPES:http://www.osaka-kyoiku.ac.jp/~tomodak/grapes/