# KSEG

## Quick Jump:

はじめに/概要
入門
選択(Selecting)
構築作業(Constructing)
変換(Transforms)
計測と計算
編集と再構築
視界と画像出力(Views and Image Exporting)
構築(Constructions)

## はじめに/概要

以下の作業の後にKSEGの最も基本的な文法に慣れて、自分で遊べる様になる だろう。より詳細な機能については、この文書をそのまま読もう。

1. KSEGの起動しよう。すると、(ツールバー、スクロールバー、メニューや ステータスバーで囲まれている)スケッチウインドウがある真っ新な白い 画板が現われる
2. 画板の中心で右ボタンをクリックすると点Aが構成される。
3. 画板の異なった位置でSHIFTキーを押しながら右ボタンをクリックすれば、 点Bが出来る。SHIFTを押したままだと点Aは非選択にならないので、この操作 の後でも二点が選択されたままである。
4. "New/Circle By Center And Point"(新規/中心点と点で円)をメニュー から選ぼう。これで点Aを中心とする点Bを通る円が生成される。 この円が出現すると選択された状態になり、点AとBは非選択となる。
5. 点Bの上で左ボタンをクリックして、それを選択しよう(これで円も選択 される)。それから、SHIFTを押しながら左ボタンを点Aの上でクリックし、 それを選択しよう。
6. メニューから再度"New/Circle By Center And Point"(新規/中心と点) を選択しよう。すると、点Bを中心とし、点Aを通る円が構築される(何故な ら最初に点Bを選択したからである)。
7. SHIFTを押しながら、最初に生成した円をクリックして選択しよう。 そうすれば、両方の円が選択出来る。
8. "New/Intersection Points"(新規/交点)をメニューから選ぼう。 二つの円の交点で二つの点が現われ、それらの両方が選択されている。
9. メニューから"New/Line"(新規/直線)を選ぼう。これで点Aと点Bの中点 を通る垂線が構成される。
10. それから、点Aを左マウスボタンを押しながら引き回そう。これで、KSEG で何が行えるかアイディアが得られるだろう。

勿論、これはKSEGで2等分垂線を構成する最も効率的な方法ではない(しかし、 コンパスと定規を用いた方法である)が、ここでの目的はどの様にして構築 や選択を行うかを示す事にある。

上に戻る

## 入門

KSEGはコンパスと定規を用いた動的な属性を簡単に可視化し、幾何学の探究を 可能な限り素早く簡単に行う事を目的として設計された道具である。私が 座ってKSEGで遊ぶと殆ど何時でも、以前知らなかった幾何学的な性質を見付け る程である。

KSEGで画面上の最初の各点を動的に構築し、それから、それらを直線や円と 云った他の対象を構築する。それから構築した点を引き回して全体構成の 応答が見られる。勿論、KSEGではそれ以上のものがあるが、これが基本的な アイディアである。私はまたLaTeXで使う為に高品質の幾何学的図形を生成 するのに使っている。その一番簡単な方法はKSEGから.psファイルを生成して EPSファイルに変換し、それをXFIGで註釈を加えて、それからPS/LaTeX書式に 出力する事である。

言葉の問題：KSEGでマクロ風の文書型の参照や、相互に依存するかも しれない幾何学的対象の参照でも"Construction"(構築)を用いる。それは 通常、私が意味する文脈から明白なものだが、この文書では、私が文書型を 参照する場合、"Construction"(構築)を大文字とし、幾何学的対象を参照 する場合は小文字で"construction"(構築物)を用いる。

### 幾何学的対象(Geometric Objects)

点(Points)、直線(lines)、計測(measurements)、計算(calculation)、 軌跡(locus)等は全て"幾何学的対象(geometric objects)"である。幾何学的 対象はそれが依存する親(parent)となる幾何学的対象を持っているかもし れない。例えば、二つの点を構築してからそれらを通る直線を構築したの であれば、それらの点は直線の親であり、直線はそれらの点の子(child)に なある。自由点を引っ張ると、その子孫達全てが再計算される。親を持つ 対象を引っ張る時(これは逆引き回し(reverse dragging)と呼ぶ)、複雑な アルゴリズムで、引っ張った対象が望ましい動きをする様に、どの親を 動かすかを決める。

交差しない円の交点の様に、ある幾何学的対象が幾何学的意味で"非存在"で あるかもしれない。もしも、両者がより接近するならば、再度、それらの点 が出現する。非存在である対象の子もまた非存在である(軌跡(locus)を例外 とする。詳細は以下の軌跡の文書を見よ)。もし貴方が、点を引き回して二つ の線分が交差しなくなって、突然、構築した対象の殆どが消えたとしても (消えた対象は、その交点の子孫である)、心配しなくても良い。再び交差す れば直ちに戻って来るだろう。

上に戻る

## 選択(Selecting)

新しい対象を構築する為には、通常、存在するものを選択しなければなら ない。ここで、これを実行する為のオプションは：

- 何も無い所で左ボタンをクリックして、全ての選択された対象を非選択 にする。
- 選択されていない対象の上で左ボタンをクリックして、その対象を選択し、 その他のもの全てを非選択にする。
- 何も無い場所でマウスの左ボタンを押し、マウスを引っ張って、それから マウスボタンを離して出来た長方形に含まれる全ての対象を選択し、他の 全てを非選択にする。
- SHIFTを押しながら対象を左ボタンでクリックすると、その対象が既に 選択されていなければそれが選択され、それ以外で非選択になる。選択さ れている他の対象はそのままである。
- 何も無い所でSHIFTを押しながらマウスの左ボタンを押しながらマウス を引っ張り、それからマウスボタンを離す事で出来た長方形に含まれる 対象の全てが追加される。
- 構築(Construction)では、構築物表(Construction list)を通して選択し ている対象のオプションが得られる。クリックやマウスの引き回し、 或いはSHIFTを使う事が出来る。他の手法とは違い、不可視で非存在の対象 を選択しても良い事に注意しよう。

一つ以上の対象が存在する個所でクリックする時にはより複雑になる (KSEGにとって、-- 勿論、貴方にとって、これは非常に初歩的なものに思え るだろう)。対象は選択"重要度(precedence)"を持つ。これは点が第一、 曲線、文字や軌跡(locus)が第二になり、充填された対象(filled object) が最後になる。もし、高い重要度を持った対象がマウスの下にあれば、 それよりも低い重要度の対象は無視される。同じ重要度であれば、複数回 クリックすれば、幾つかの選択可能なものを巡回する。クリックすれば、 何が起きたのかが判り易い位置にStatus barが置かれている。

### 選択群(Selection Groups)

複数対象の選択でより強力な方法は、選択群(selection group)を使う事 である。選択群は、それらで選択作業が容易に行える様にKSEGに纏めた事を 伝えた対象の群である。"Edit/Selection Gtoups..."(編集/選択群)で、 選択群の管理ウインドウ(文書に対応している)が出る。それを開くと、組込 の選択群も含む文書で、全ての選択群の一覧ボックスが現われる。その組込の 選択群はアスタリスク(*)で印が付いている。-- 全ての群がその型となる 対象の全ての型に印がある。

selection group managerの一覧で選択群(selection group)を選択し、 Selectボタンを押した時、全ての群(group)の対象が選択され、他の全ての 対象は非選択となる。SHIFTを押しながら、Selection(選択)ボタンを クリックすれば、その時点で選択されている対象を非選択にせずに、 その群の対象が選択される。Deselect(非選択)ボタンをクリックすれば、 その群の対象だけが非選択になる。少なくとも一つの選択された対象が あれば、New Groupボタンが有効になる。それをクリックすれば、選択された 対象で構築された新しい群が生成される。組込の群を削除する事は出来ない。

そのAffect Invisible Items checkboxは組込の群のみに影響する。 それが(デフォルトの)非検証であれば、"All Points"(全ての点)は非隠蔽の 点のみを参照する。検証されていれば、"All Points"は非隠蔽の点も同様に 参照する。組込でない群は、隠蔽されたものも含めて、それらの中で、 全ての対象を常に選択/非選択とする。

(非組込の)群は、もしその項目が(直接的に、或いはundoを通じて)削除され ると、空になるかもしれない。その様な群は負符号で印付けられているが、 自動的に削除されていない(何故なら、undo/redoがそれらの群の中で対象を 元に戻せる)。一方で、空の群は文書と一緒に保存されない。

Back to top

## 構築する事(Constructing)

新しい対象を構築すると、それが直ちに選択される。SHIFTを押しながら、 右マウスボタンをクリックすれば、選択された点を除く他の全ての対象が 非選択となる。

### 点(Points)

- 自由点を生成する為には、KSEGの画面の空の領域で右クリックする。
- 曲線上で右クリックをすれば、曲線(直線、線分、半直線、円、円弧) に含まれる点が構築される。
- 二つの直線の交点に含まれる点を構築する為には、交点で右クリックをする。 他の方法に、メニューから"New/Intersection point(s)"(新規/交点)を選ぶ。 二つの曲線が(少なくとも、潜在的に)二つの交点を持っている時、 右クリックでは唯一つの点を構築するだけだが、メニューのオプションで それらが構築出来る。
- 一つ、或いはそれ以上の線分の中点を構築する為には、それらを 選択して、"New/Midpoint(s)"(新規/中点)を選ぼう。

二種類の点 --端点と中心点--もある。端点を持たない線分や、中心点を 持たない円を既与のものGiven)として持つ事が構築(Constructions) では非常に便利である。線分、半直線(ray)や円弧の端点の構築では、 それを選択して"New/Endpoint(s)"(新規/端点)をメニューから選ぶ。 円や弧の中心点を構築する為には、それを選択して"New/Center Point" (新規/中心点)を選ぶ。

### 線分(Segments)

線分を構築する唯一つの方法がある。それは、二つかそれ以上の点を選択し、 "New/Segment(s)"を選ぶ事である。もし、二つの点が選択されていれば、 一つの線分が構築される。もし、n>2個の点が選択されていれば、 n個の線分が構築される。

### 半直線(Rays)

- 一点から他の点を通る半直線(ray)を構築する事が、(順番に)二つの点を 選択して"New/Ray"(新規/半直線)を選択する事で可能である。複数の半直線 を生成する為には、二つ以上の点を選択する。
- 角度の2等分を構築する為には、角度を定義する3点を選択し、 "New/Angle Bisector"(新規/角の2等分)を選ぶ。2等分は常に鋭角側を2等分 する。

### 直線

- 直線を構築する為には、二つやそれ以上の点を選択し、"New/Line(s)" (新規/直線)をメニューから選ぶ。
- ある点を通り、与えられた直線と並行な直線を構築する為には、 点と直線(線分や半直線も同様に利用可能である)を選択し、 "New/Parallel Line"(新規/平行線)を選択する。複数の点や直線や線分 (両方は駄目)を選択しても良い。
- 直線の垂線を構築する場合は平行線の様に選択するが、だた、異なる のは、メニューから"New/Perpendicular Line(s)"(新規/垂線)を選ぶ事 である。

### 円

- 与えられた中心と与えられた一点を通る円を構築するには、中心点と 円が通る点を選択し、"New/Circle By Center And Point" (新規/中心点と一点で円)を選ぶ。
- 与えられた中心点と与えられた半径の円を構成する為には、中心点と、 その長さが半径となる線分を選択し、 "New/Circle By Center And Radius"(新規/中心点と半径で円)を選ぶ。

### 弧(Arcs)

弧は3点を選択して、"New/Arc By Three Points"(新規/3点で弧)をメニュー から選ぶ事だけで構築される。

### 軌跡(loci)

軌跡(locus)は曲線に沿って点("駆動部")が動くのに従って("被駆動"対象 となる)他の幾何学的対象の経路を表現する幾何学的対象である。軌跡を 構成する為には曲線上の点とその点の子孫を選択する。被駆動対象に点、 曲線や他の軌跡(但し、これは本当に遅い)でさえもあって良い。もし、 被駆動対象が非存在であったとしても、軌跡が存在し得る。何故なら、 その駆動対象が異った位置にあれば被駆動対象が存在するかもしれないから である。

例えば、Lを直線、AをL上の点、BをL 上にない点、そして、KをAを通るABの垂線とする。 そこで、Kを被駆動対象、Aを駆動部とすると、Kが 描く軌跡の包絡は放物線になり、それはLに対して接線となる焦点 Bを持つ。

軌跡は幾何学的対象の無限集合なので、KSEGはそれを正確に計算出来ない。 実際、検定によって軌跡を近似している。KSEGが特定の軌跡に対して行なう 検定数を変更出来る。それは、軌跡の上でダブルクリック、或いはそれを選択 し、"Edit/Change Number Of Samples..."(編集/検定数を変更)を選択して 行う。特定の場合は被駆動対象が点の場合である。この場合、KSEGは自動的 に検定された点を繋ぎ、軌跡が滑かで正確になる様に妥当なアルゴリズムを 用いる。この場合、指定した検定数は実際に実行される検定数の単なる上限 となる。アルゴリズムが軌跡が十分良いと判断すれば検定を停止するかもし れないからである。これは適合するアルゴリズムにより、KSEGに似た プログラムで生成されたものと比べて一般的に見栄えの良い軌跡が得られる

### 充填された対象(Filled Objects)

- 多角形内部を構成する為には、三点以上を選択して、"New/Polygon" (新規/多角形)を選ぶ。
- 扇型(arc sector)を構成する為には、弧を選んでから"New/Arc Sector" (新規/扇型)を選ぶ、弓型(Arg segment)に関しては、弧を選択してから、 "New/Arc Segment"(新規/弓型)を選ぶ。
- 円内部を構成する為には、円を選択して、"New/Circle Interior" (新規/円の内部)を選ぶ。

Back to top

## 変換(Transforms)

KSEGでは、幾つかのAffine変換を幾何学的対象に作用させる事が可能である。 "Transform/××"(変換/××)と云ったメニュー項目を使って変換を定義する 為、"××"に対応する幾つかの対象を選ぶのが一般的な手続である。それから、 変換する対象を選択して、Transformメニューから適切な作用を選ぶと、選択 された対象を変換した複製が生成される。これが詳細である：

選択するもの:

- ベクトルを選ぶ為には、二つの点を選択して"Transform/Choose Vector" (変換/ベクトルを選出)に行く。そのベクトルは最初に選択された点から 二番目に選択されたものに向く。
- 鏡像を選ぶ為には、直線、線分や半直線を選択し、 "Transform/Choose Mirror"(変換/鏡を選ぶ)に行く。
- 中心点を選ぶ為には、ある点を選択し、"Transform/Choose Center" (変換/中心を選出)を選ぶ。
- 角度を選ぶ為には、一緒に3個の点か、一つの秤か計算機を選択し、 "Transform/Choose Angle"(変換/角度を選ぶ)を選ぶ。
- 半径を選ぶ為には、二つの線分、一つの計測、或いは計算の何れかを 選択し、"Transform/Choose Ratio"(変換/半径を選出)を選ぶ。

現在選ばれている対象群は、何が変換されるのかが判る様に黄色で印が付け られている。もし、変換を実行して、黄色の印(美学的、或いは スナップショットの為に、それらは印刷時には現われない)を外したければ、 "Transform/Clear Chosen"(変換/選出を解除)を選ぶ。

- 対象を平行移動(translate)したければ、ベクトルを選ばなけれ ばならない。
- 対象を鏡像変換(reflect)したければ、鏡を選ばなければならない。
- 対象を拡大・縮小(scale)したければ、中心と倍率を選ばなければ ならない。
- 対象を回転(rotate)したければ、中心と角度を選ばなければならない。

比や角度について選ばれた計測や計算で対象が変換可能であれば、コンパス と定規を使って出来ない構築が簡単に生成出来る。これに注意を払っても 良いが、それは楽しい事でもある -- 例題のcoord.segファイルにKSEGで 軌跡として助変数付き曲線のグラフの作り方を載せている。

Back to top

## 計測と計算(Measuring and Calculating)

様々な幾何学的諸量をKSEGで計算が可能であり、その計測(measuring)を 用いて計算(calculating)も行なえる。全ての距離単位は画素で、角度は 度である。ここで計測可能なものは：

- 点と曲線や他の点の間の距離を計測する為には、二つの幾何学的対象を 選択し、"Measure/Distance"(計測/距離)をメニューから選ぶ。
- 線分の長さを計測する為には、線分を選んで"Measure/Length" (計測/長さ)を選ぶ。
- 円周を計測する為には、円を選択してから"Measure/Circumference" (計測/円周)を選ぶ。
- 弧の長さを計測す為には、弧を選択してから"Measure/Arc Length" (計測/弧の長さ)を選ぶ。
- 弧や円の半径を計測する為には、対象を選択して、"Measure/Radius" (計測/半径)を選ぶ。
- 3点で定義された角度を計測する為には、3点を選択して、 "Measure/Angle"(計測/角度)を選ぶ。
- 二つの線分の長さの比を計測する為には、それらを選択してから "Measure/Ratio"(計測/比)を選ぶ。
- 線分、rayや直線の傾きを計測する為には、対象を選択してから "Measure/Slope"(計測/傾き)を選ぶ。
- 充填された対象の面積を計測する為には、多角形、扇型、弓型や円内部 を選択して、"Measure/Area"(計測/面積)を選ぶ。もし、"悪い"多角形 (単純閉曲線になっていないもの)を選択した場合、その計測された"面積"は その画面上に出ている面積に等しくならない。

計算では幾つかの計量を組合せる事が可能である。計算を行う為には。 "Measure/Calculate..."(計測/計算...)をメニューから選ぶか、或いは 存在する計測の上でダブルクリックする。もしも、何も選択されずに計測や 計算が選択されていれば、メニューのオプションで"空"の計算を生成するが、 もし、計測や計算が選択されていれば、選択された物を参照した計算を行う。 ダブルクリックすれば、ダブルクリックした計測を参照した計算を行う。 その両方の場合で、計算編集ウインドウに計算したい公式を入れる事が出来る。 もし、既存の計算をダブルクリックすると、計算編集ウインドウが開かれて、 その計算を編集する事が出来る。

計算EditorではUndoのスタックはKSEGの残りのundoスタックとは完全に 分離したもので、計算編集rウインドウが閉じられると即座に失なわれる。

計算editorウインドウの中で、数字、通常の算術演算を入力したり、根、羃 や商をツールバーから(或いは、ショートカットキーでCTRL+2、CTRL+6、 CTRL+/を使って)選択する事が可能である。以下の函数も利用可能である：

sqrt, log, exp, floor, ceil, fabs, sin, cos, tan, sinh, cosh, tanh, asin, acos, atan, asinh, acosh, atanh

Measurements/transform(計測/変換)では(単位系が)角度であったが、上述の 函数では弧度法で動作する事に注意せよ。私はこの問題が判っているが、 これを修正する唯一の合理的な方法は単位系を追加する事である。

最後に、計算Editorが開いた状態で、KSEGの主ウインドウで、他の計測や 計算を左クリックして参照する事も可能である。編集中のものを参照する 計算を更に参照する事は許容されていない。

私がKSEGを使っていてあまり嬉しくない個所がこれである事を言わなければ ならない。何如なる単位も持っておらず、その計算も酷いものだ。 最後に、公式コードは醜く、そして遅い(その上、幾分虫だらけである)。

Back to top

## 編集と再拘束(Editing and Reconstraining)

### 見栄えの修正と札付け(Appearance Modification and Labels)

対象を(幾つか)選択して、目的に応じて"Edit/Color"(編集/色), "Edit/Linestyle"(編集/直線の書式),"Edit/Pointstyle"(編集/点の形)や "Edit/Font"(編集/フォント)をメニューから選んで、特定の描かれた幾何学 的対象を望む様に指定する事が可能である。対象を選択せずにこれらの メニューを選ぶと、その後の構築された対象のデフォルトの見栄え (Appearance)となる。色、フォント等はツールバーでは利用出来ないが、 これらのメニューの一番上にある破線をクリックして、そのメニューを 外して、ツールバーを使うのと同じ様に出来る。

点と様々な曲線は札(label)を持っており、それは対象を選択したり、 "Edit/Show Label(s)"(編集/札を見せる)を選ぶと表示される)(それらは (デフォルトでは見えない)。対象を選択したり、"Edit/Change Label" (編集/札の変更)をメニューから選んだり、もし、見えているのであれば、 それをダブルクリックする事で修正が可能である。もし、貴方がどの様に するのか描写出来るのであれば :-)、他の事項と同様に、札に上寄せ書き (superscript)や下寄せ書き(subscript)をする事が出来る。札が参照する 対象に対応する様に、札を引っぱって動かす事が出来る。

### 再拘束(Reconstraining)

elaborate constructionに半時間以上も費やしたり、その上、その出鼻 から小さな間違いをしていた事を見付ける事程欲求不満の溜る事は無い。 KSEGの再構築機構で、往々にしてそれを簡単に修正が行える様になる。 点を再拘束する為には、CTRLを押して点を左マウスボタンを押しながら 点を引っ張って、それを再拘束したい対象に落す。

例えば、三角形ABCを構築したとしよう。そして、未に見付かって いない中心点を長らく構築し、それから、ABCが二等辺三角形 (isosceles)の時に、その挙動を調べる事にしたとしよう。AB=BC にする為、中心点をBでAを通る円を構成する。 それから、CTRLを押したまま、点Cをその円に左マウスボタンを押し ながら引っ張って行く。マウスボタンを離すと、Cはその円周上に ある様に拘束されるので、ABCは二等辺三角形となる。もし、再度 ABCを任意にする事に決めたのであれば、CTRLを押しながら、円周の Cを左ボタンを押しながら引っ張ってし、それを空いた場所に落せば 良い。

だから:

- CTRLを押しつつ、左マウスボタンを押しながら点を引っ張ると即座に その点は自由になる。
- 空の領域に点を落すと、その点は自由のままである。
- 点を曲線の上に落す事で、その点は曲線の上に拘束される。
- 二つの曲線の交わりに点を落す事で、その点は交わりの上に拘束される。
- 点を他の別の点に落せば、二つの点は融合する。最初に、引っ張った 点が消え、それらの全ての弧は引っ張って行った点に移される。

この全ては勿論、CTRL+Z("Edit/Undo")で取り消す事が可能である。 status barには、点を落すと何が生じたかが判る様になっている。

時々、KSEGは望む様な再拘束を実行しない事がある。これにはちゃんとした 理由がある(虫の所為かもしれないが)：点を自分の子孫の一つに再拘束する 事は出来ない。駆動に関する軌跡で被駆動点の依存性を壊す場合、その点の 再拘束は出来ない(又、ある軌跡の駆動点を再拘束する事も決して出来ない)。 最後に、構築には複雑な規則があり、それは、構築を再拘束でぐじゃぐじゃ にならない事を保証しようとするものである。例えば、"既与"(Given)の 点を"最後の"(Final)曲線に再拘束する事は出来ない。もし、KSEGが構築を 無効にする再拘束が実行出来たなら、どうか、私に報せて欲しい

Back to top

## Views and Image Exporting

### 視界合せと拡大・縮小(View Panning and Zooming)

貴方の構築物がより良い見栄えになる様に、KSEGは拡大や縮小、移動が 行える。拡大・縮小を行うには"View/Zoom"を選ぶ。マウスカーソルが虫眼鏡 に変化する(スケッチ領域の上にある時)。左マウスボタンを押しながら上に マウスを引っ張れば拡大、下に引っ張れば縮小になる。拡大・縮小はマウス ボタンが押された点の回りになる。マウスボタンを離した後には、 マウスカーソルは通常の矢印に戻る。現時点の拡大率は常にstatus barに 表示される。拡大・縮小の無効性に注意しよう。点、直線の厚さやフォントの 様な物では大きさが変らない。全体描写(pan)は拡大・縮小と同様の方法で 行なわれる つまり、"View/Pan"(視界/全体描写)を選び、左マウスボタンを 押してドラッグする。その代りに、メニューに行かずに全体描写が行える。 それは、マウスの中ボタンを押しながらマウスを引っ張る事である。

もし、"View/Zoom To Fit"(視界/視野に合せる)を選ぶと、KSEGは自動的に全 体描写と拡大・縮小を行なって、視野に嵌る様にする。もし、 "View/Original Zoom(100%)"を選べば、KSEGは拡大率を100%にして、 原点に画像を戻す。

### 複数視界(Multiple Views)

現在の文書の(別のウインドウで~)別の視界を生成する為には、 "View/New View"(視界/新しい視界)に行く。新しいウインドウが現われる。 一つの視界での枠合せと拡大縮小は他の視界に影響を及ぼさないが、文書 の修正や対象の選択は、その文書全ての視界に反映される。だから、もし、 ある視界で一つの点を引き回すと、全ての視界でその反応を見る事になる。 例えば、スケッチの小さな部分で作業を行う(或いは拡大された視界で綺麗 な動きにする)為に、異なった視界でスケッチ全体への影響が同時に見られる 様に視界が使える

### 画像出力

現在の視野に含まれる物を(幾つかの一般的な書式で)画像ファイルに出力する 事が可能である。これを行うには、"File/Export to Image..." (ファイル/画像出力)を選ぶ。ダイアログが現われて、ファイル書式と画像を "高画質(High Quality)"にするかどうかが選べる。OKをクリックして、 ダイアログに現われたファイル名を選ぶ。画像の次元は現在の視野の次元 となる。

もし、"高画質画像(High Quality Image)"を選択すると、KSEGでは出力に 時間が掛るが、その画像はアンチエイリアスされたもので、subpixel精度で 描かれたものになる。このオプションはWeb向けの画像を作るのには非常に 素晴しいが、もし、それを印刷すれば酷い見栄えになるかもしれない (低品質版以下よりも悪い)。又、白黒画像に出力するのであれば、高画質 設定は使わない -- それは醜く見える(而し、グレイスケールは良い)。 低画質モードを使う事がより"安全"である。何故なら、出力された画像は 正確に画面に表示されているものそのものだからである。

Back to top

## 構築(Constructions)

構築(Construction)は恐らくKSEGで最も強力な機能である。構成は通常の KSEGのスケッチに似ているが、他のKSEGスケッチ(或いは構成)に引き戻せる 事が異なる。最初に簡単な例を：

### 円周の例題を一巡り

ここでは、例題構成であるcircumcircle.secの構築を通して、散策しよう。 その道に沿って、私は各々の段階の意味を説明しよう。この構成は 与えられた3点を通して円を構成するものである。

1. 新しい構成を"File/New Construction"(ファイル/新しい構成)で 生成する。
2. 3点A,BとCを構築する。これらの点はその構成で与えられたものを 表現する。
3. A,BとCを選択して、それらを"Construction/Make Given" (構成/既与のものにする)で"既与のもの(Given)"にする。これでKSEGは これらの点が引き戻された時に、構成で既与のものである事を認識する。
4. 線分ABとBC、それらの中点D,Eを構築する。
5. Dを通るABの垂線とEを通るBCの垂線を構築する。それらの交点Fを 構築する。これは三角形ABCの外接円の中心(circumcenter)となる。
6. そうして、中心点をFとし点Aを通過する円を構築する。これが欲し かった外接円である。
7. そして、外接円を除く全ての対象と与えられたものの3点を選択し、 それらを隠す為に、"Edit/Hide Objects"(編集/対象を隠す)を選ぶ。 これを実行するのは、その構成の引き戻しの時に、中間生成の対象で ごたついている様子を画面で見たくない -- 外接円だけが欲しいの だから。
8. これこれ！新しいスケッチを("File/New Sketch" (ファイル/新しいスケッチ)で)生成して3点をスケッチで構築、それらを 選択して"Play/Untitled"(再生/名称未定)を選択して、その構築を検査 する(構築を保存していないものとする)。魔法の様に外接円が現われる だろう!

### 非再帰的構築(Non-Recursive Constructions)

構築(Construction)の威力の殆どは再帰性が使える事に因るものである。 ここで、非再帰的構築は非常に単純である。-- 上の外接円の例題には、 それらについて知るべき事の殆ど全てを網羅している。ここではもう 少し詳細を述べる(それらは再帰的構築も同様である)。

- 親を持つ対象は既与のもの(Given)として刻印されている。この場合、 もし、それらが構築一覧(Construction List)内で"(not constructed)" (構築されていない)と刻印されている様なもので無い限り、その親を 生成する事は屡々意味を成さない。

  技術的に、これは規則である：対象上の有向グラフ(directed graph) として親子関係を想像しよう。もし、対象Hから他の子供を 持たない対象への(有向グラフでの)全ての経路で少なくとも既与の対象 があるので、Aは構築されない。
- 軌跡(locus)の定義として必要な対象は既与の対象として刻印出来ない。 例えば、既与のものとして駆動点は刻印出来ない。何故なら、KSEGは、 その構築が引き戻された時に、曲線に対して拘束されるか保証出来ない からである。
- 選択された対象に対して、その型が異なる既与の対象に適合する様に 出来る。例えば、構築で線分Sを生成して既与のものとして刻印 を行い、それから、その上に点を構成する。(異なった文書中で)弧、円、 半直線、直線や線分を選択しても良く、この構築を再生すると、点は貴方 が選択した対象上に現われる。而し、もし、この構築でその点を通過する Sの垂線を構築すれば、円や弧上でその構築の再生が行えない。

  既与の対象に選択した対象を適合させるアルゴリズムは自明ではない (しかし、それは理論的にもあまり良いものでもない)。最初に試みられる ものは既与の順序に選択された順序を合せる事である。もし、それが 上手くいかなければ、検索が試みられる(それは本当に二分適合法 (bipartie matching)を実行すべきであるが、実装する為に作業がもっと 必要なものの、その価値は疑問である)。その様な適合が可能な(そして、 Play(再生)メニューの項目が無効(disabled)になっている)時でさえ、 選択された対象を与えられたものに適合させる事が時々出来ないかも しれない

  その場合、与えられた順序に近い様に異った順序で対象を選択する。
- 既与のものとして刻印されていない自由点(計測や計算も同様)は乱数的 に配置される。曲線に含まれる点は曲線上の乱数的な位置に配置される。
- Quick Playは共用して使う構築(Construction)のライブラリにアクセス するのに非常に手軽な機能である。"Play/Quick Play/Change Directory..." で好きな構築が収められているディレクトリを選択し、それから、 そのディレクトリ中の構築の一つの既与のものに対応する文書中の幾つか の対象を選択し、それから、実際に構築を読込まずにそれを再生する為、 "Play/Quick Play/ConstructionFilenane.sec"をメニューから選ぶ。 KSEGはそのディレクトリで構築を検出し、その既与のものが現在選択 されている対象と適合する構築を有効にする。
- 構築として複製を行う事で、スケッチを取ったり、それを変更して 構築文書に入れる事が可能となる。もし、あるスケッチで作業をしていて、 他のスケッチに適用したいものを見付けた場合にこれは便利である -- "File/Copy As Construction"(ファイル/構築として複製)を選ぶと、 そのスケッチと同じ幾何学的対象を含む新しい構築が現われる。 そこで、必要の無い対象を削除したり、幾つかの既与の対象に印を付け たり、他の文書にその構築を適用する事が出来る。

### 再帰的構築(Recursive Constructions)

構築を用いる最も凄い良い方法は再帰的にする事である。こうする事で、 構築を何度も繰返す事で、フラクタルが構築出来る。単純な例題として、 fractix.secを参照されたい(短い線分と30階の再帰を用いている)。 (複数の再帰的な分枝を持つ)より複雑なものは、フラクタルを構築する dragon.secを参照されたい。

ループ"対象"が挿入された構築は再帰的になる(ループ対象は本当に幾何学的 な対象ではなく、それらはそうであるかの様に振舞う)。ループを挿入する為 には、既与のものに適合する対象を選択し、"Construction/Recurse" (構築/再帰)をメニューから選ぶ。ループは結局のところ、KSEGにその構築 で他の手順が実行される事を伝える。ループが指定された時点で選択されて いる対象から開始して、構築を再帰的に繰返す。勿論、KSEGは無限にこれを 繰返さない -- 再帰的構築を再生する時、KSEGは最大の再帰性深度を尋ねる。 次の事に注意しよう -- もし、構築で一つ以上のループがあれば、KSEGが 構築しなければならない対象の数が最大再帰深度の指数となる -- 言い換え れば、再帰深度は小さく保つべきである。私の古い350mHzのシステムで、 KSEGは100,00個の対象を快適に扱える -- それは私が考察するものに関し ては十分だろう。

ループを挿入すると直ちに、既与の対象の集合が固定される事を忘れない事 (既与のものを新しい対象として刻印したり、現時点での既与の対象を通常 のもの(normal)にする事は出来ず、全ての既与の対象を削除すると全ての ループ等を削除する)。これはループが無効になる事を防ぐ為である。 与えられたものの対象の集合を変更する為には、先ず最初にループを削除せよ。

再帰的構築で対象を"最終(Final)"や"初期(Initial)"にする事も可能である。 最終対象は直接的である：それらは最大再帰深度のみで構築される。 これは、多くの物にとって、殊に、最高水準の詳細のみを見せる フラクタルでは便利である -- dragon.secやsierp2.secを参照されたい。 最終対象の子供は最大再帰深度のみで構築も可能である。 それらは構築表(Construction list)で"(final")と印が付いている。

初期(Initial)対象は複雑である -- それは"より進んだ"機能である。 それは全てが強力ではないが、時には説明するのが本当に難しいものだが、 十分にweirdな効果を持つ。初期対象はただ一度だけ構築される(再帰深度 の上の水準で)。それらの親が初期(或いは、暗喩的に初期)であれば、 暗喩的に初期になり、構築表で"(initial)"と刻印される。これを良く図示 したものとしてはsierp.secを参照されたい:最初にそれをさらりと流す (最も大きな三角形の辺が一度だけ構成される事に注意されたい)、それから、 点Pを初期線分(Initial segment)s_9に構築して、(Pから既与の点への)線分PC を構築する。それを再び巻戻して、その効果を観察する。初期対象は (kuch.secの場合の様に)メモリやそれらの効果を保持する為に使える。

再帰的構成では、最終/既与/初期(Final/Given/Initial)対象を扱う時に、 親として最終対象を持つ初期や既与対象の様な無効、或いは意味の無い構成 とならない様にKSEGは最善を尽す。それで行なっている事は自明な事では無い かもしれないが、通常は正しい事である(もし、貴方がそうでない場合を見付 ければ、どうか私に、その無効な構築とそれが無効になる行為の詳細を添付し た電子メイルを送って下さい)。

Back to top

Ilya Baran
ibaran@mit.edu
http://www.mit.edu/~ibaran/

Last modified: Tue Jun 15 01:03:57 JST 2004