KSEG輔助文件
此文件是根據 Xu Xianghua 提供的簡體中文版,配合原始英文版修改而來的。
快速連結:
開始/簡短攻略
介紹
點選
作圖
轉換
測量和計算
編輯和重約束
檢視及圖像輸出
作圖器
開始/簡短攻略
跟著下面的步驟做,你馬上就能夠熟悉KSEG最基本的使用方法,就能隨心所欲操作它了。如果想學習進階功能,就要把整篇文檔都讀完。
- 首先啟動KSEG。你可以在作圖視窗看到一張展開的畫布(它周遭有工具列,捲軸,功能選單和狀態列)。
- 在畫布中央右擊鼠標,建立點A。
- 按住SHIFT鍵,再一次於畫布的空白區域上右擊鼠標,建立點B。按住SHIFT鍵的目的是不讓點A取消點選狀態,此時畫布上有兩個被點選的點。
- 在功能選單中點擊"新增/用圓心和點畫圓",建立一個以點A為圓心,經過點B的圓。此時圓顯示為點選狀態而點A和B取消了點選狀態。
- 在點B上左擊鼠標,以點選點B(同時圓取消了點選狀態)。按住SHIFT鍵點擊點A將其點選。
- 再次點擊功能選單"新增/用圓心和點畫圓"。這次建立了一個以點B為圓心(因為先選擇了點B),經過點A的圓。
- 按住SHIFT,點選第一個圓。這時候有兩個被點選的圓。
- 點擊功能選單"新增/交點"。在兩個圓的交點處出現了兩個點,都處於點選狀態。
- 點擊功能選單"新增/直線"。建立了點A和B的垂直平分線。
- 現下用鼠標左鍵拖曳點A。哈,現在你知道KSEG可以用來做什麼了吧。
這當然不是KSEG中建立垂直平分線最有效率的方法(這是尺規作圖的方法),只是展示一下如何建立及選擇元件。
回到頂端
介紹
KSEG讓你可以輕鬆地展示尺規作圖的動態特性,並且使得幾何探索盡可能地便捷和簡單。每一次我坐下來玩KSEG,我幾乎都會發現一個以前不知道的幾何特性。
使用KSEG,你可以建立動態作圖: 首先在畫布上放置一些點,用這些點作出其它元件,如線和圓。然後你可以拖曳這些點,觀察整個的圖是如何變化的。當然KSEG還有更多的功能,但這是基本的想法。我還經常用它產生LaTeX中使用的高品質幾何作圖。我發現最簡單的方法(用在LaTeX中)是:
在KSEG中作好圖,儲存成 .ps 文件,然後轉換為 EPS 格式,在 XFIG 中寫註解,再輸出為
PS/LaTeX 格式。
術語問題: 我使用詞語"Construction(作圖)"指KSEG中使用的一種類似巨集(macro-like)
檔案類型,也用它表示一組相互依賴的幾何元件。通常透過上下文能瞭解我在說什麼,但在本文檔中我
使用大寫首字母的"Construction"表示檔案類型,而用小寫的"construction"表示一組幾何元件。("Constructions"可以看成是作圖程式,給定一些輸入元件,它就會自動地作圖,得到最終的圖形,也可以看成是個作圖機器,因此下面被翻譯為"作圖器"。而"construction"就翻譯為"作圖"。"play"的意思用作圖器自動作圖,因此翻譯為"自動作圖")
幾何元件(Geometric Objects)
點,線,測量,計算,軌跡等都是幾何元件。一個幾何元件可能有其所倚賴的"父"幾何元件。例如你建立了兩個點,又透過這兩點建立了一條直線,那麼這兩個點就是這條直線的"父元件",直線是這兩個點的"子元件"。當你拖曳一個自由(無父母)的點時,它的所有後代都需要重新計算。當你拖曳一個有"父母"的元件(這稱作逆向拖曳)時,KSEG透過一個複雜的算法確定需要移動哪些父元件,如何移動,使得你能夠移動拖曳的元件。
幾何元件可能"不存在"於真實的幾何中,如不相交兩圓的"交點"。如果圓移動後變得更接近時,就真正存在這些交點了。不存在元件的子元件也是不存在的(軌跡是個例外,詳情見本文檔軌跡部分)。因此在你拖曳一個點過程中,可能一下子你作的圖就不見了,因為兩條線段不再相交了(消失的元件都是交點的後代),不必擔心,當兩條線段再次相交時一切都回來了。
回到頂端
點選(Selecting)
為了建立新元件,通常要先點選既有的元件。下面是一些點選方法:
- 在空白處左擊鼠標,取消所有元件的點選狀態。
- 在未被點選的元件上左擊鼠標,點選該元件,同時會取消點選所有其它元件。
- 在空白處按下鼠標左鍵,拖曳鼠標,釋放,會點選所有與剛才拖曳的方框相交(包含或者相交)的元件,其餘的不被選擇。
- 按住 SHIFT 鍵、同時左擊元件,如果該元件不處於點選狀態,則會被點選,如果處於點選狀態,則會取消點選狀態。其它元件的點選狀態不變。
- 按住 SHIFT 鍵,在空白處按下鼠標左鍵,拖曳鼠標,釋放,會點選所有與剛才拖出的方框相交的元件。(其它元件的點選狀態不變)
- 在作圖器(Construction)中,還可以在作圖命令列表(Construction list)中選擇元件。可以點擊,可以拖曳,也可以用 SHIFT 鍵。與其它方法不同的是,這種方式允許你選擇不可見和不存在的元件。
當你點擊的點上有多個元件時,事情就複雜些了(換句話說,對於KSEG,你要使用非常直觀的方式觀察)。元件有不同的點選優先等級: 首先是點,曲線,文字,軌跡其次,填充的元件最後。如果鼠標點的地方同時有不同優先級的元件,只會點選最高等級的元件,而忽略其它的元件。對於同一優先等級的多個元件,算法則是: 在所有點選的可能性中進行循環。在你點擊鼠標時可以透過觀察狀態列的顯示結果,以確定點選了那一個元件。選擇群組(Selection Groups)
點選多個元件的更有效的方法是使用群組。點選群組是一組元件,當你告訴KSEG這些元件是一組時,就可以更輕鬆地進行點選操作。點擊功能選單"編輯/選擇群組(Edit/Selection Groups)",打開選擇群組的管理窗口,會顯示出一個列表框,其中包括所有的內建點選群組和你打開的檔案中的點選群組。內建選擇群組是以星號標記,每種類型的元件有一個選擇群組,組合了該類型的所有元件。
當你在選擇群組管理器的列表框中選擇一個(或多個)選擇群組,並點擊選擇(Select)按鈕,該組的所有元件都會被點選,而不會點選其它類型的元件。按住 SHIFT 鍵並點擊選擇(Select)按鈕,該組的元件被點選,其它類型的元件維持原來的選擇狀態。點擊取消選擇(Deselect)按鈕會取消該組元件的選擇。當有至少一個元件被點選時,就可以點選新增群組(New Group)按鈕,點擊它會建立一個包括所選元件的群組。內建群組不能被刪除。
"影響隱藏元件(Affect Invisible Items)" 選取方塊只會影響內建群組。當其未被勾選(預設狀態)時,"所有 點 Points"就是指所有非隱藏點;勾選時,"所有 點 Points "就包括隱藏點。非內建群組會選取或不選取群組裡的所有元件,包括隱藏的元件。
非內建群組裡的所有元件被刪除後,就會變成空的群組(直接刪除或透過undo)。這樣的群組會以'-'標記,但不會被自動刪除(因為透過undo/redo可能會讓該組所有元件復活)。空群組不會被儲存到檔案中。
回到頂端
作圖(Constructing)
當新元件被建立的時候,他們會自動變成選取狀態,其它元件會被取消點選狀態,例外是按住 SHIFT 鍵右擊鼠標建立點 Points 時。
點(Points)
- 在KSEG畫布的空白區域右擊鼠標,就建立自由點(沒有"父母")。
- 在曲線上右擊鼠標,建立被約束於曲線(直線,線段,射線,圓,弧)上的點(只能在曲線上移動,隨曲線一起移動)。
- 如果要建立約束於兩條曲線交點的點,可以直接在交點上右擊鼠標。或是點選這兩條曲線,點擊功能選單"新增/交點(New/Intersection point(s))"。當兩條曲線有兩個交點時,使用功能選單方法可以同時建立兩個交點,而右擊方法只能建立一個。
- 要建立一條或多條線段的中點,可以點選它們並點擊功能選單"新增/中點(New/Midpoint(s))"
還有兩種類型的點是端點(endpoints)和圓心(center points)。這在作圖器中非常有用,你可能有一條線段但沒有端點,或者一個圓沒有圓心。要想給線段,射線,弧建立端點,點擊功能選單"新增/端點(New/Endpoint(s))"。要給圓或弧線建立圓心,點擊功能選單"新增/圓心(New/Center Point)"。
線段(Segments)
畫線段的唯一方法,就是點選兩個或更多的點,然後點擊功能選單"新增/線段(New/Segment(s))"。如果有兩個點被點選,就只會建立一條線段。如果 n > 2 個點被點選,將會建立 n
條線段。
射線(Rays)
- 建立一條經過某一個點,到另一個點的射線的方法,要先依序點選這兩個點,然後點擊功能選單"新增/射線(New/Ray)"。選擇多個點就可以建立多條射線。
- 建立角的平分線,要先點選定義該角的三個點(一個頂點,每條邊上各一個點),點擊功能選單
"新增/角平分線(New/Angle Bisector)"。角平分線總是會平分銳角部分。
直線(Lines)
- 建立直線,要先點選兩個或多個點,然後點擊功能選單"新增/直線(New/Line(s))"
- 要建立一通過某個點,與一條直線平行的平行線,要先選擇點和直線(線段或射線也可以),然後點擊功能選單
"新增/平行線(New/Parallel Line)"。你還能選擇多個點或者多個直的元件(直線,線段,射線)
來建立平行線(但不能點和直線都選擇多個)。
- 作垂線,要先和作平行線一樣選擇元件,然後點擊功能選單"新增/垂線(New/Perpendicular Line(s))"
圓(Circles)
- 給定圓心和圓上的點建立圓,依次選擇圓心和點,然後點擊功能選單"新增/用圓心和點畫圓
(New/Circle By Center And Point)"。
- 給定圓心和半徑作圓,要先選擇圓心和長度為半徑的線段,然後點擊功能選單"新增/用圓心和半徑作圓
(New/Circle By Center And Radius)"
圓弧(Arcs)
圓弧只能用三個點建立,要先選擇三個點,然後點擊功能選單"新增/用三點畫弧(New/Arc By Three Points)"。
軌跡(Loci)
軌跡是一種幾何元件,就是當一個點("驅動元件(driver)")在一條曲線上移動時,另外一個幾何元件("被動元件(driven object)")的移動路徑。要建立一個軌跡,選擇曲線上的一個點(約束於該曲線上的點),再選擇一個它的後代元件,點擊功能選單"新增/軌跡(New/Locus)"。被動元件可以是一個點,曲線,甚至是另一個軌跡(但這會跑得很慢)。即使被動元件不存在,也可能有軌跡,因為當驅動器移動到另外的位置時,被動元件就存在了。
舉例來說,設L是一直線,A是直線L上一點,B是直線外一點,K通過A是AB的垂線。那麼如果K是被動元件而A是驅動器,則K的移動軌跡的外緣就是以B為焦點,與L相切的拋物線。
因為軌跡是幾何元件的無限集合,KSEG無法精確計算。事實上是利用取樣的方法做近似。你可以改變KSEG計算的樣本數,例如在軌跡上雙擊鼠標,或者選擇軌跡,點擊功能選單"編輯/更改樣本數(Edit/Change Number Of Samples...)"。例外的情況是,當被動元件是點的時候,KSEG會自動將樣本點連接起來,並用適應演算法快速地將軌跡變得光滑和準確。這種情況下你所指定的樣本數只是一個上限,當演算法認為軌跡已經足夠好的時候會自動停止計算樣本。這種演算法產生的軌跡看起來比與KSEG類似的程式產生的軌跡好得多。
填充元件(Filled Objects)
- 建立多邊形面: 選擇3個或3個以上的點,點擊"新增/多邊形(New/Polygon)"。
- 建立扇形: 點選圓弧,點擊"新增/扇形(New/Arc Sector)"。建立弓形,點選圓弧,點擊"新增/弓形(New/弓形)"。
- 建立圓面: 選擇圓,點擊"新增/圓面(New/Circle Interior)"。
回到頂端
轉換(Transforms)
KSEG能對幾何元件作仿射轉換。通常的做法是先"選取"元件,點擊功能選單"轉換/選擇*(Transform/Choose *)"
進行轉換。試試,點選想轉換的元件,在功能選單中選擇你想作的轉換,轉換後的複製品就出現了。下面是
詳細內容:
選取:
- 向量: 選擇兩個點,點擊功能選單"轉換/選擇向量(Transform/Choose Vector)",就產生了從第一個點指向第二個點的向量。
- 鏡像: 選擇一條直線,線段或射線,點擊"轉換/選擇鏡像(Transform/Choose Mirror)"。
- 中心: 點選一個點,點擊"轉換/選擇中心(Transform/Choose Center)"。
- 選擇角度: 點選三個點,或一個測量值,或計算值,點擊"轉換/選擇角度(Transform/Choose Angle)"。
- 選擇比例: 選擇兩條線段,或一個測量值,和計算值,點擊"轉換/選擇比例(Transform/Choose Ratio)"。
目前選擇轉換的元件都會被標記為黃色,讓你知道將進行什麼轉換。如果你已經執行了轉換,但想去掉黃色標記
(為了美感或是顯示問題--標記不會被列印的),點擊"轉換/清除選擇(Transform/Clear Chosen)"。
- 執行平移轉換必須選取一個向量。
- 映射元件必須選取一個鏡像。
- 縮放元件,必須選取一個中心和一個比例。
- 旋轉元件必須選取一個中心和一個角度。
能夠用選定的測量或計算值進行轉換,讓你能輕鬆地建立尺規作圖難以完成的圖形。你可能要小心地
使用這個技巧,但它也可能很有趣的--例如 coord.seg 展示了如何用KSEG畫出像軌跡那樣的參數曲線。
回到頂端
測量和計算(Measuring and Calculating)
在KSEG中可以測量多種幾何量,並利用測量進行計算。所有距離的單位都是像素,角的單位是度。你可以測量的有:
- 測量點與點,或曲線的距離: 選擇這兩個元件,點擊"測量/距離(Measure/Distance)"。
- 測量線段的長度: 點選線段,點擊"測量/長度(Measure/Length)"。
- 測量圓的周長: 點選圓,點擊"測量/周長(Measure/Circumference)"。
- 測量圓弧的弧長: 點選圓弧,點擊"測量/弧長(Measure/Arc Length)"。
- 測量圓弧或圓的半徑: 點選元件,點擊"測量/半徑(Measure/Radius)"。
- 測量三點定義的角度: 點選三個點,點擊"測量/角度(Measure/Angle)"。
- 測量兩條線段的比例: 點選它們,點擊"測量/比例(Measure/Ratio)"。
- 測量線段,直線或射線的斜度: 點選元件,點擊"測量/斜度(Measure/Slope)"。
- 測量填充元件的面積: 點選多邊形,扇形,弓形或圓面,點擊"測量/面積(Measure/Area)"。如果你測量的是一個"壞的"多邊形(沒有圍成簡單的封閉曲線),測量結果可能與螢幕上顯示的面積不符。
可以把幾個測量結果組合到一個計算中。點擊功能選單"測量/計算...(Measure/Calculate...)"或雙擊既有的測量值,就會建立一個計算。如果點選了測量和計算,功能選單選項會打開與選擇相關的計算,而如果沒有選擇,就打開一個空的計算。雙擊方法會打開與你雙擊元件相關的計算。在任何一種情況下,你都可以在計算的編輯窗口中輸入公式。如果雙擊已有的計算,會打開一個計算編輯視窗,讓你編輯這個計算。
計算編輯器的復原堆疊與KSEG主視窗的復原堆疊是完全獨立的,當計算編輯器視窗關閉後,復原堆疊就會消失。
在計算編輯器中,你可以輸入數字,常用算術運算符號,可以在工具列中選擇求方根,指數,分數(或使用快捷鍵CTRL+2,CTRL+6,CTRL+/)。你還可以用下面的函數:
sqrt,log,exp,floor,ceil,fabs,sin,cos,tan,sinh,cosh,tanh,asin,acos,atan,asinh,acosh,atanh
請注意上面這些函數用的是弧度,而不是測量和轉換中使用的角度。我知道這很差勁,但解決的唯一途徑是增加單位支援的修正。
最後,當計算編輯器打開時,你還可以引用其它的測量或計算,只需要在它們上面雙擊。但是你不可以引用,引用了你正在編輯的那個計算的計算值。
我必須說的是,這部分是我最不喜歡的。沒有基本的單位支持,計算也很土。而且公式的代碼很醜陋,很遲鈍(還可能有bug)。
回到頂端
編輯/重約束(Editing and Reconstraining)
修改顯示和標籤(Appearance Modification and Labels)
你可以透過"編輯/顏色(Edit/Color)","編輯/線型(Edit/Linestyle)","編輯/點型(Edit/Pointstyle)",和"編輯/字型(Edit/Font)"自訂你所點選的元件的外觀。如果不選擇元件而進行修改,將會影響預設的設定。顏色,字體等設置都不在工具列中,但你可以點擊相關功能選單最頂部的虛線,將功能選單拉出來,作為工具列使用。
點和各種曲線都有標籤,但預設不顯示。你可以選擇元件,點擊"編輯/顯示標籤(Edit/Show Label(s))"使它的標籤顯示。點選元件點擊"編輯/更改標籤(Edit/Change Label)",或者在標籤上雙擊,就能夠修改標籤。還能在標籤中使用下標和上標,及其它的東東,如果你能夠找出來的話。(CTRL+2 輸入根號,CTRL+3 矩陣,CTRL+4 積分符號,CTRL+5 求和符號,CTRL+6 上標,CTRL+8 連乘符號,CTRL+- 下標...) 你還可以對應於它參考的元件拖曳移動標籤。
重約束(Reconstraining)
沒有什麼比花了半小時費心地作了個圖,卻發現開始的時候就犯了個小錯誤更討厭的了。KSEG的重約束機製能讓你輕鬆地修正它。要重新約束一個點,可以按住 CTRL 鍵,用左鍵拖曳該點,移動到想被約束的元件上,釋放鼠標,它就被約束到那個元件上了。(就是把原來的"父母"元件換成另外的元件)
例如,假設你建立了一個三角形ABC,經過一番操作還沒有找到它的中心,於是決定研究一下當ABC等腰時的特點。為了使AB=BC,以B為圓心畫過A的圓。然後按住 CTRL 鍵,將C點拖動到圓上,釋放鼠標后,點C就被約束到圓上了(以圓為"父"了),三角形也變成了等腰的了。如果想讓三角形ABC再次變成任意的,按住 CTRL 鍵,將點C拖動到空白處釋放鼠標就好了(C就變成"孤兒"了)。
因此:
- 按住 CTRL 鍵並拖曳一個點,會立刻使該點自由。
- 將點拖曳到空白處釋放鼠標,該點將保持自由。
- 將該點拖曳到曲線上釋放鼠標,該點將被約束到該曲線上。
- 將點拖曳到兩條曲線的交點上,將使該點被約束到該交點上。
- 將該點拖曳到另外的點上會使這兩個點合併。實際上在程式內部,這個點就消失了,它的所有後代都被約束到另外的點上了。
所有的這些動作顯然可以透過 CTRL+Z("編輯/復原(Edit/Undo)")復原。狀態列會盡力告訴你當你拖曳點的時候發生了什麼事情。
有時候KSEG可能不讓你作你想要的重約束。這是有原因(當然也不排除是bug)的,你不能將點重約束到它的後代上去(不能搞錯輩分!)。如果重約束一個點時,會破壞一個軌跡上的被動點對其驅動器的倚賴關系,你也不能重約束它(你同樣不能重約束軌跡的驅動器點)。還有,在作圖器中有複雜的規則確保重約束不會擾亂作圖器。例如,你不能重約束一個"給定"點到一個"最終"曲線。如果你發現KSEG允許你重約束,卻把作圖器弄錯了,請告訴我。
回到頂端
檢視和圖像輸出(Views and Image Exporting)
檢視平移和縮放(View Panning and Zooming)
為了能更容易地觀察你的圖,KSEG能夠縮放或者移動圖。縮放,點擊"檢視/縮放(View/Zoom)"。鼠標的游標將變成放大鏡的形狀(在草圖區域)。按下鼠標左鍵並上下拖動,將放大或縮小圖形。縮放是以鼠標所在的點為中心的。釋放鼠標后,游標恢複原狀。目前的放大率會一直在狀態列上顯示。但是不管什麼樣的放大率,點大小,線的粗細和字體大小都不會變化。平移的做法和縮放一樣--點擊"檢視/平移(View/Pan)",按下鼠標左鍵並拖動。或者,不用點擊功能選單,按下鼠標中鍵(如果你有的話)就可以拖曳平移。
如果點擊"檢視/最適檢視大小(View/Zoom To Fit)",KSEG會自動平移和縮放,使圖恰好填滿視窗。如果點擊"檢視/原始檢視大小(100%)",KSEG會將放大率設置為100%,並將圖形平移到初始位置。
多重檢視(Multiple Views)
點擊"檢視/新增檢視"可以為當前檔案建立另一個檢視(在另外的視窗中)。在一個檢視中平移和縮放不會影響到其它的檢視,但是修改檔案或選擇元件會反應到本文檔的其它檢視中。所以你在一個視圖中拖曳一個點,你能看到其它的檢視都有反應。檢視的用處是,例如可以在一個檢視中對付草圖的一小部分(或者在一個放大的檢視中作出完美的動作),而同時在另外的檢視中觀察整個草圖的反應。
輸出圖像(Image Exporting)
可以把當前檢視中的內容輸出到圖形文件中(包括常用的幾種格式)。只需點擊"文件/輸出為圖像(File/Export To Tmage...)"。然後就會出現一個對話框讓你選擇文件格式及是否使用高品質格式。點擊確定後在彈出的對話框中輸入檔案名稱再確定就好了。圖像的大小和檢視的大小是一樣的。
如果選擇了"高品質圖像",KSEG需要更長的時間輸出,但圖像會被反鋸齒化(antialiased)並以亞像素的分辨率繪製。該選項對製造網路圖片非常有用,但是打印出來卻很糟糕(比低質量的更差勁)。而且,當輸出黑白圖片時,千萬不要用高品質的設置(但是灰階圖卻很好)--非常糟糕。使用低質量模式比較保險,因為圖形在螢幕上是什麼樣,輸出的圖像就什麼樣。
回到頂端
作圖器(Constructions)
作圖器(Constructions)大概是KSEG的最強大的特性了。一個作圖器(Construction) 就像一個普通的KSEG草圖,不同的是它可以自動製作另外一個KSEG草圖(或作圖器(Construction))。首先看一個簡單的例子:
外接圓範例攻略(Circumcircle Example Walkthrough)
這部分將帶你一步一步製作範例 circumcircle.sec。在這個過程中,我會解釋每一步的涵義。這個作圖器(Constructions)會繪製一個通過三個給定點的圓。
- 新增作圖器(Constructions): "檔案/新增作圖(File/New Construction)"。
- 建立三個點A,B,C。這三個點將作為 Construction 中給定的點。
- 選擇A,B,C,點擊"作圖器/設為給定(Construction/Make Given)",將它們設為"給定"。這是告訴KSEG這三個點在自動作圖時是給定的。
- 建立線段 AB,BC及它們的中點 D,E。
- 過D作AB的垂線,過E作BC的垂線。建立它們的交點F。這是三角形ABC的外接圓圓心。
- 現下作以F為中心過A的圓,這就是所求的外接圓。
- 點選除了外接圓及三個給定點外的元件,點擊"編輯/隱藏元件(Edit/Hide Objects)"將它們隱藏。這麼做的目的是在自動作圖的過程中,我們不想看到過程中間生成的元件出現,我們只想要外接圓。
- 大功告成! 建立一個新的草圖(點擊"文件/新增草圖(File/New Sketch)")來測試這個作圖器吧。在新草圖中建立三個點,點選它們後點擊"自動作圖/未命名"(假設你沒有保存剛才的作圖器)。一個外接圓立刻就出現了!
非遞廻作圖器(Non-Recursive Constructions)
作圖器的大部分功能來自於遞廻。非遞廻的作圖器非常簡單--上面外接圓的例子涵蓋差不多所有的功能了。下面還有些細節(對遞廻作圖器同樣適用)
- 有"父母"的元件可以被標記為給定。在這種情況下,記住通常不要建立沒有用處的"父"元件。這種元件會在作圖命令列表中被標記為"(未建立 not constructed)"。
從技術上說,規則是這樣的: 將"父子"關係看成是元件的有向圖。如果在有向圖中,每條從
A出發指向無"後代"元件的路徑中至少有一個給定元件,那麼A就不能被建立。
- 定義軌跡時所需要的元件不能被指定為給定。例如,不能將驅動點指定為給定,因為在用作圖器自動作圖時,不保證給定點會被約束在曲線上。
- 不同類型的元件也可以相互設為給定。如在一個作圖器中,建立線段S,設為給定,再在它上面建立一個點,然後在另外的草圖中點選一個圓弧,圓,射線,直線或線段,以作圖器自動作圖,一個點就出現下所選的元件上了。但是,如果你在作圖器中建立的是一個S的垂線,就不將這個作圖器應用到圓或圓弧上。
將所選元件與給定元件對應的演算法不是那麼簡單的(但在理論上還不是很完美的)。首先要試著將所選元件的順序與給定元件的順序對應。如果不行,再試著搜索(也許應該用二分法搜索的,但還有更重要的功能要實現,這個先放放吧)。有時候可能所選元件和給定元件不能匹配,但實際上能匹配(自動作圖功能選單中的對應子功能選單項被禁用)。在這種情況下,使用另外的順序選擇元件,盡量和給定元件的順序一致。
- 沒有被設為給定的自由點(還有測量和計算)會被隨機放置。約束到曲線上的點也被放置到該曲線上的隨機位置。
- 快速自動作圖是個非常有用的功能,透過它可以使用你常用的作圖器庫。打開功能選單"自動繪圖/快速自動繪圖/切換目錄...(Play/Quick Play/Change Directory...)",選擇存放你最愛的作圖器的目錄,然後在你當前的文檔中選擇一些和你想用的作圖器中的給定元件對應的元件,點擊"自動作圖/快速自動作圖/作圖器文件名(Play/Quick Play/ConstructionFilename.sec)",就能用這個作圖,而不用打開它了。為了這麼做,KSEG會搜尋該目錄中的作圖器,將給定元件與所選元件對應的作圖器顯示在功能選單中。
- 複製為作圖器 使你能夠將一個草圖變為作圖器。這在你作草圖的時候發現某些作圖步驟可以應用在其它的作圖中的時候非常有用,只需要點擊"文件/複製為作圖器(File/Copy As Construction)",包含目前草圖中所有元件的作圖器檔案就打開了。你可以將不需要的元件刪除,設置給定元件,就可以將這個作圖器用在其它作圖中了。
遞廻作圖器(Recursive Constructions)
作圖器最酷的用法就是遞廻了。這個功能可以建立出碎形圖,也可以重複多次地自動作圖。舉個簡單的例子,看看 tractix.sec (用一段短線段和30左右的遞廻次數)。複雜的例子(多個遞廻分支)見 dragn.sec,建立了一個碎形。
當你插入了循環"元件"到作圖器中,它就變成了遞廻作圖器(循環元件不是真正的幾何元件,只假裝它們是而已)。插入循環的方法是: 選擇幾個對應到給定元件的元件,點擊功能選單"作圖器/循環(Construction/Recurse)"。循環會告訴KSEG,當作圖器中的其它步驟完成時,對這幾個元件進行重複前面的作圖命令。當然KSEG不會永遠循環下去--當你用遞廻作圖器自動作圖時,KSEG會問你最大循環次數。要小心--如果你的循環次數大於1,KSEG建立的元件數量是循環次數的指數倍,換句話說,循環次數盡量小一些。在我的老350mhz電腦上,KSEG大概能輕鬆得處理100000個元件--我想這足夠應付任何情況了。
要記住一旦你在作圖器中插入了循環,給定元件就不能再被修改了(不能標記新的給定元件,不能將已設定的給定元件設為普通,刪除一個給定元件就會刪除所有的循環,等等)。這麼做是為了防止循環無效。想改變給定元件,要先刪除循環。
在遞廻作圖器中還可以將元件設為"完成(Final)"或"初始(Initial)"。完成元件顧名思義是在循環到最後一層時才建立。這在很多情況下都有用,特別是在分形圖中只顯示最高級的細節的時候--看 dragon.sec 和 sierp.sec。完成元件的子元件也是在循環的最後一層才建立的 -- 它們在作圖動作列表中被標記為"完成(Final)"。
初始元件要複雜些--它是一個"高級"功能。它並不是非常強大,但它有一些奇特的效果,有時候很難搞懂。初始元件只建立一次(在頂級循環中,即第一次)。"父"元件都是初始元件(或隱式的初始元件)時,它就是隱式初始元件,在作圖動作列表中被標記為"初始"。為更好地理解,看一些例子 sierp.sec: 先正常地自動作圖(注意看三角形的最長邊只建立了一次),任何在初始線段 s_9 上作一個點 P,作線段 PC(從點 P 到給定點 C)。再次自動作圖並觀察效果。初始元件的使用可以節省記憶體(例如 koch.sec),也可以用它們作出特別的效果。
在遞廻作圖器中,當處理 完成/給定/初始 元件時,KSEG盡量避免錯誤或無用的設定,例如初始或給定元件有"父"元件是 完成 的。可能這麼做看上去沒什麼,但通常它都是正確的(如果你發現了例外,請email我,將正確的作圖器和錯誤動作的描述告訴我)。
前面提到,作圖器就是一個作圖程式,而給定元件就相當於這個程式的輸入參數。因此用作圖器自動作圖時,要現選定給定元件,所選擇的元件要和作圖器的給定元件(輸入參數)相對應,而且其順序也會影響作圖。在遞廻作圖器中,循環就類似於其它程式語言中的函數的遞廻,將作圖器中的作圖指令(作圖函數)重複調用,不過函數的參數不是給定元件了,而是其它的元件(因此在設置循環時,選擇的元件也要與給定元件相對應)。
回到頂端
Ilya Baran
ibaran@mit.edu
http://www.mit.edu/~ibaran/
---------------------------------------
繁體中文版 by Yao Chang-Li
cctg blog
cctg mirror blog