本書從對圖形圖像本質的認知開始,梳理圖形圖像的表達機制與產生機理,指出圖形圖像的源頭是形,基礎是幾何,由此認識圖學與幾何的關系,揭示圖學計算的內涵,從幾何與計算兩個基本要素分析圖學計算的若干關鍵問題,給出圖學的計算基礎。本書可作為工程圖學、計算機圖形學、計算機圖像處理及CAD等課程的先修課程教材或教學參考書,凡從事與圖形圖像處理相關工作的研究人員、工程設計人員、教師與學生等都可直接使用本書所闡述的思想、方法和算法。
前 言圖形圖像在人們生活中的應用已經極大地普及,人類社會已經進入一個圖形圖像時代。統一圖形圖像的研究順應了這個形勢,符合社會和科學發展的規律,圖與研究圖的圖學科學的作用將會日益增大。中國圖學學會2013年發布《圖學學科報告》,提出建立“大圖學”學科。本書是在大圖學的概念下,根據“圖學是研究形和圖,它們的表示、表現以及互相之間轉換的科學,它的核心是形,本質是幾何”的基本定位,編寫本書作為圖學的公共教材和參考書,闡述目前分散于工程圖學、畫法幾何、計算機圖形學和計算機圖像處理等圖學分支共同的計算基礎,使圖學有一個統一的、較高的公共平臺。
圖形圖像的形象性、直觀性、準確性和簡潔性使得人們可以通過圖形來認識未知,探索真理。圖形圖像已成為重要的計算源、計算對象和計算結果,已被作為解的一種表現形式去追求,這樣的計算遍及各個領域。
圖學的公共計算基礎是什么?本書的回答是:一是幾何,二是計算。本書從幾何與計算兩個基本要素全面論述了形、圖、幾何與圖學計算間的關系。
先說幾何。圖源于形而展現形,圖與圖學的基礎是幾何。形是輸入,有個構造問題;圖是輸出,有個繪制問題。它們的基元是幾何元,形的構造與圖的繪制通過幾何計算實現。
James R. Miller說過:Computer graphics and modeling rely on mathematical operations on points and vectors. I advocate using vector geometric analysis to simplify required derivations.(計算機圖形學和造型依賴于點和向量的數學運算,我認為應使用向量幾何分析去簡化推導。)簡短的表述揭示了計算機圖形學和造型的基礎是點與向量的運算,也充分揭示了圖學與幾何的緊密關系。國際幾何學與圖學學會(International Society for Geometry and Graphics,ISGG)每兩年召開一次國際幾何學與圖學會議(ICGG),是將圖學與幾何定位得最緊密也是最貼切的國際學術組織與國際會議。
圖形圖像由幾何組成。圖形,由“圖”和“形”兩個字組成。其一,圖描述形,是形在畫面上的展現,本質是表達形;其二,圖源于形,由形而來,形是圖之源。因此,在計算機上模擬現實世界、構建虛擬世界時,先要造型,而后得圖。追溯圖形圖像的來源,不管是拍攝的照片還是計算機生成的圖形圖像,它們都是自然景象、計算機模型(可以抽象地通稱為“形”)在某一視角下在特殊位置畫面上的顯示。揭示圖形圖像的本質是:它們同是具有顏色、寬度、線型等屬性的一系列點、線等基本幾何按照一定的關系組合起來構成各種色彩斑斕的圖片(picture)而已。
圖學研究的對象是幾何元。圖形圖像的構造、產生、傳輸和處理就是圍繞這些點、線、面等幾何元及幾何元間的關系、組合展開的。這些不同的幾何元依照一定的拓撲關系組織起來構造成不同的幾何形體;通過投影在畫面上顯示成圖——圖形或圖像,無論是位圖還是矢量圖,終極處理對象是點、線等圖元,它們都屬于幾何。
圖學的理論基礎是幾何。圖學研究造型理論與方法、形→圖的理論與方法、圖的處理理論與方法、圖→形的理論與方法以及圖的傳輸理論與方法等,其理論、方法和技術基礎是幾何學,也會借助于代數學、計算機等其他學科或是學科交叉。本書特別討論了畫法幾何的地位及其理論。畫法幾何原本屬于幾何的一部分,在法國幾何學家蒙日非數學地闡述了投影理論后才成為一門獨立于幾何的學科,與笛卡兒的幾何代數化偏重于解析方法走了不同的路。回歸畫法幾何的幾何學地位,充分發揮畫法幾何給出的結論,充分看到它所用的方法更偏重于幾何化的特點并將其進一步發揚光大,關注非數學化的畫法幾何的“計算化”問題——本書認識到并充分討論了這些問題。
再說計算。圖學計算是對幾何的定義、構造、度量和顯示,它的重點是處理幾何間的關系,而不是幾何元的參數。關鍵是解決幾何奇異、維度差距、計算穩定性、計算方式與解的表述等。
最基礎的學科是數學,數學的本質不是“數”,而是“算”。計算的學問應該叫“算學”,算學抓住了計算的本質,更能體現計算的神韻。而且,從某種意義上說算學的范圍似乎比數學更大,例如,在計算機時代,至少算學還包括算法,我國古代就有算經、算術之說,術就是算法。
圖形圖像已成為新的計算對象和目標。早先的計算源、計算對象和計算目標都是數,現在更多的領域需要將圖形圖像作為計算對象和目標,以圖形圖像作為輸入源,經過計算,轉化成另外一種形式的圖形圖像。數由數字表達,圖形圖像由幾何元表達。不同的幾何元依照一定的拓撲關系構造成不同的場景,在空間構造形;通過投影將不同屬性的圖元按一定的形式組織起來并加上屬性,在平面上顯示圖。這里,找出圖元間的組織形式的過程就是圖學計算。
圖學計算的空間維度是不統一的。實體空間與表示空間不統一,思維空間與計算空間不統一。圖學計算的工作都是人按空間思維設計,計算機則是按線性的數計算實施的。這里,三維的形被直接跨越到一維的數計算,缺少必要的過渡和銜接,幾何屬性被“打”得面目全非,形的關系和變化難以完備地獲得和表達。人的思維被用于適應這種轉換,空間思維優勢就難以發揮,造成在某種程度上對算法的掌控能力下降。
幾何問題幾何化。數學主要發生于幕后,起關鍵作用的是人,包括人的思維、人的邏輯、人的規劃,因此計算的模式需要改變,以適應這種新的計算對象和目標。為此,本書全面闡述了一個基于“幾何問題幾何化”的幾何計算理論體系與實施框架,為了交流的方便,命名為“形計算”機制。從形的整體去主導算法設計,構建算法框架,使它更有利于形的表述、圖的生成,使圖學計算的過程更加結構化、直觀化、簡單化。形計算引入“幾何數”,協助表征幾何的定義與幾何間關系的表示并輔助整個計算過程,在理論上給出了解決幾何奇異問題的整體方案。引入“幾何基”作為形計算的基本單元,淡化代數表述和代數運算,更好地發揮人的空間思維能力去構建算法的設計框架、宏觀地描述整個求解過程。形計算補充常規的“數計算”機制。書中闡述了形計算在計算中的地位、作用和應用領域,給出了它的理論基礎、計算基礎和實施方案及眾多的實例。這是幾何代數化發展到圖形圖像時代的必然趨勢——加強圖形認知方式在計算中的作用。
計算穩定性是算法的主要考量。本書特別強調算法的穩定性,從根源上分析了引起幾何計算不穩定的原因并提出了相應的對策。導致幾何計算不穩定主要有兩個原因:一是由數字誤差引起,幾何參數的數據誤差和計算過程中誤差的積累導致計算錯誤;二是由幾何關系引起,共點、共線和共面導致幾何關系奇異而引起幾何選擇與幾何重組錯誤。幾何信息錯誤,在局部;幾何關系錯誤,于全局。在計算機中,幾何信息是實數,有誤差和錯誤;幾何關系的拓撲信息是正整數,只有錯誤。信息有錯誤,計算結果也就錯了,信息有誤差,計算就不穩定,兩者性質不同。“錯誤”引起的錯在明處,有結果;“誤差”引起的錯在暗處,結果不確定。更為可怕的是,幾何間的共點、共線、共面是幾何模型的客觀存在,這種“正常現象”引起的錯,現在還沒有一套理論去處理。本書提供了這個支撐,指出幾何計算的不穩定源于數據的誤差和幾何關系奇異兩個根本原因,并提出了相應的對策,書中的幾何算法都考慮了這些引起計算不穩定的因素。
下面談一下本書在寫作上的一些考慮。試圖作為圖學的公共基礎教程與參考書,比專業基礎教程要難寫得多。何謂“公共”?何謂“基礎”?內容如何挑選?章節怎樣組織?問題從哪個角度敘述?等等。教學應該是基于思路的培養而不僅僅是傳播知識,本書對這些都進行了精心的設計與安排。本書定下了幾個寫作原則:一是將問題抽象化,揭示問題的本質;二是既要兼顧到傳統理論,又要以公認的基礎理論如數學、計算機方法敘述解決問題的思路,盡量將多學科的思想綜合起來;三是充分發揮人的主導作用,人腦善于空間思維,因此多從幾何的角度考慮問題,注重先從整體進行算法的框架設計,最后才追究具體的細節,將繁復的計算付諸代數的實施。
下面列舉幾個例子來闡述一下本書的一些寫作思路。
還畫法幾何的幾何歷史地位,并嘗試畫法幾何的計算化進程。本書將畫法幾何作為幾何的一個分支并確立畫法幾何在圖學中的地位,在這個認知上去闡述畫法幾何的基本理論,包括投影理論、2D/3D對應理論和尺規作圖方法等。畫法幾何的核心思想是幾何問題幾何化。本書將畫法幾何投影作圖思想與現代計算技術相結合,綜合圖解法和解析法的優勢,探索畫法幾何投影理論的計算化問題,最后構造出畫法幾何投影計算的基本工具和算法,這是圖學計算化,特別是畫法幾何計算化的一個重要部分。
幾何表示問題。解決一個問題首先是描述清楚問題本身。幾何表示包括兩個方面:單個幾何元的表示以及多個幾何元之間的關系描述。幾何代數化的關鍵是引入坐標系,使幾何可以在這個坐標系下實現解析化。這意味著對某一幾何引入不同的坐標系,該幾何就有不同的解析表示,但幾何本身是不變的。因此,對任一幾何元,如何設法找到一組最佳向量構建坐標系,在這個坐標系下,幾何的表述、求解以及幾何間相交關系的求取是最簡單的。本書引入“計算坐標系”簡化幾何表示與幾何間求交計算。多個幾何元之間的關系描述也是幾何表示的一個重要問題。形體,通常是由邊界描述的;圖形,除了一些輔助線以外,一般也是由邊界描述的。本書利用向量概念,對幾何元、幾何邊界進行有向表述,有利于區分圖形和形體的內外,簡化了二維和三維布爾運算及奇異情況的處理。這一思想統一在“幾何數”中表述。
變換機制。“圖形變換”的說法并不確切,變換有兩種:一種是對圖形或幾何形體本身的變換,如比例變換、錯切變換;另一種是坐標系的變換,導致幾何的解析表述的改變,如平移變換、旋轉變換。本書采用一種“變換的幾何化表示”方法,其理論基礎是平面上任意兩條共點不共線的單位向量或空間任意3條共點不共面的單位向量就構成一個坐標系。得到的齊次矩陣可以統一描述平移、旋轉、錯切、對稱和比例等變換,而且它的矩陣元素可由基本幾何(向量)的定義和求解系統得到。
投影機理。畫法幾何中講解軸測投影的目的是繪制軸測圖,但是與正投影完全不同的是,軸測圖的繪制并不是從“投影”這個定義出發去實現的,而是以軸測軸的定義決定的,按照“沿軸量畫”的原則確定空間點在軸測圖中的位置。因此建議在畫法幾何中講解軸測圖繪制時,不強調軸測投影的定義,而是認為軸測圖是以二維圖形的形式去表現三維立體,使其具有立體感。本書從數學上統一解決了畫法幾何的各類投影問題,包含正軸測、斜軸測、正等測等軸測的統一表示。
透視參數計算。本書給出了定量求取透視變換參數的通用方法。證明了對一個空間物體,一定存在另一個空間物體,使前者在畫面上的透視投影與后者的平行投影是一樣的,且保留了深度方向的對應關系。這個性質可使復雜的透視投影轉化成簡單的平行投影,使圖形處理簡化。
形計算。形計算是本書的主線,是本書圖學計算采用方法的代名詞。本書通過一些典型的實例剖析了形計算的內涵,并將形計算引入的幾何數、幾何基等概念貫穿于全書的算法實例中。對于它們在圖學計算中的作用以及如何應用,本書都有獨特的闡述。
全書包括導論、形計算、計算策略、幾何變換、幾何基礎、二維計算、三維計算等7章和一個算法索引附錄。“導論”部分在大圖學的概念下比較完整地闡述了圖與圖學、圖學計算的核心問題;“形計算”部分提出了一種更適合于圖學計算的形計算機制,這是本書給出的圖學計算的理論體系與實施框架;“計算策略”部分闡述了形計算的實施策略,闡述了保證圖學計算的穩定性、幾何奇異處理和降維計算的基本思想和實施方法;“幾何變換”和“幾何基礎”兩章給出了實現形計算的基礎和基本工具;最后,在“二維計算”和“三維計算”兩章中,通過一些典型例子給出了形計算的實際應用,展示了圖學計算中的一些常用計算策略——如降維計算(含計算坐標系建立、向任意面投影)、幾何奇異問題處理等如何在實際中應用,這在圖學計算中有引領作用。
本書兼顧了工程制圖、計算機圖形學和計算機圖像處理等圖學課程的相關需求,可以作為工程圖學、計算機圖形學、計算機圖像處理、CAD等課程的教材或教學參考書。凡從事與幾何信息的獲取、表示、處理和分析相關的工作的廣大研究人員、工程設計人員、教師和學生等都可直接使用本書提供的思想、理論、方法和技術。
除了已經發表的論文以外,本書的一些觀點與內容還在ICGG、中國圖學大會等國內外學術會議上作過演講,與同行進行過不少的交流。本書還得到了國家自然科學基金項目“幾何問題幾何化及計算穩定性研究(61073086,2011—2013)”的資助。
除了已經列出的參考文獻以外,本書還參考或采用了一些圖書及網上的資源,不可能一一列出,謹向那些作者表達謝意。
書中不當之處,歡迎讀者、專家和同行勿吝指正。
2017年6月5日于上海
目 錄
前言
第1章 導論1
1.1 圖學相關學科1
1.1.1 工程圖學1
1.1.2 畫法幾何2
1.1.3 計算機圖形學3
1.1.4 計算機圖像處理4
1.2 圖學4
1.2.1 圖形圖像的基元是幾何5
1.2.2 圖學的本質是幾何5
1.2.3 圖學計算與幾何計算6
1.2.4 圖學計算基礎分析7
1.3 圖學計算中的若干問題8
1.3.1 主導形和圖的是幾何關系而非幾何參數8
1.3.2 圖學計算的重點在于求取幾何間的關系9
1.3.3 圖學計算中的維度不統一9
1.3.4 圖學計算中的計算穩定性10
1.4 圖學計算模式選擇10
1.4.1 計算方式與解的表述11
1.4.2 數計算與形計算12
1.4.3 幾何化計算的總體思想13
1.5 本章總結13
第2章 形計算14
2.1 形計算的基本概念14
2.1.1 形計算在計算中的地位14
2.1.2 形計算理論基礎15
2.1.3 形計算基本架構16
2.2 幾何數17
2.2.1 幾何數的基本概念17
2.2.2 基本幾何的幾何數18
2.2.3 幾何連接及幾何邊界的幾何數19
2.2.4 幾何度量的幾何數20
2.2.5 向量交點的幾何數21
2.2.6 交點幾何數擴展到圓弧22
2.2.7 三維幾何數24
2.3 幾何基26
2.3.1 幾何基的基本概念27
2.3.2 幾何基的構建28
2.3.3 基于幾何基的幾何求解29
2.4 變換幾何化30
2.5 降維計算31
2.6 零域誤差32
2.7 本章總結32
第3章 計算策略34
3.1 穩定計算34
3.1.1 源于數字誤差的不穩定34
3.1.2 源于幾何關系的不穩定35
3.1.3 數字誤差與幾何關系對計算穩定性的影響分析36
3.1.4 解決計算不穩定性的方案37
3.2 幾何奇異處理39
3.2.1 重交點的取舍規則39
3.2.2 重邊交點的取舍規則40
3.2.3 幾何奇異處理算法41
3.2.4 三維幾何奇異的處理42
3.3 計算坐標系43
3.3.1 二維計算坐標系43
3.3.2 三維計算坐標系45
3.4 向任意面投影46
3.4.1 向任意面投影原理46
3.4.2 向任意面投影算法47
3.5 降維計算48
3.5.1 降維計算的總體框架48
3.5.2 降維計算算法49
3.6 本章總結49
第4章 幾何變換50
4.1 幾何變換的傳統理論51
4.1.1 齊次坐標及齊次矩陣51
4.1.2 幾何變換的一般形式52
4.1.3 變換及其乘積52
4.1.4 二維變換53
4.1.5 三維變換53
4.2 變換的幾何化理論54
4.2.1 變換幾何化的基本理論54
4.2.2 常規變換的幾何化實現57
4.3 正投影59
4.3.1 投影體系59
4.3.2 正投影的基本理論60
4.3.3 點的正投影61
4.4 軸測變換62
4.4.1 軸測投影的基本概念63
4.4.2 軸向系數與軸間角64
4.4.3 軸測投影與軸測圖的若干問題66
4.4.4 軸測投影變換的一般公式70
4.5 透視變換72
4.5.1 透視變換的基本原理72
4.5.2 透視變換矩陣73
4.5.3 透視投影轉化為平行投影73
4.5.4 通過旋轉方法生成透視圖75
4.5.5 通過傾斜畫面方法生成透視圖78
4.6 本章總結80
第5章 幾何基礎82
5.1 數學基礎82
5.1.1 向量的表示82
5.1.2 向量的基本運算83
5.1.3 向量點積83
5.1.4 向量叉積84
5.1.5 兩向量的旋向84
5.2 基本幾何85
5.2.1 點85
5.2.2 直線85
5.2.3 圓87
5.2.4 圓弧87
5.2.5 平面87
5.3 基礎計算88
5.3.1 過平面上兩點建立直線88
5.3.2 求與已知直線相距為定長的平行線89
5.3.3 求兩直線正方向的角平分線89
5.3.4 以已知半徑作圓,與兩已知直線相切90
5.3.5 已知劣弧段的起點、終點及有向半徑,求劣弧段的圓心坐標90
5.3.6 求直線與圓的交點91
5.3.7 求兩圓的交點92
5.3.8 求兩個已知圓的外公切線或內公切線93
5.3.9 過圓外一點作圓的切線94
5.3.10 以已知半徑作圓,與已知直線和圓相切94
5.3.11 空間線與面的關系95
5.3.12 平面與平面相交96
5.4 幾何度量96
5.4.1 點到直線的有向距離97
5.4.2 點到平面的有向距離97
5.4.3 點到一條空間直線的距離97
5.4.4 點到一空間直線的垂足97
5.4.5 直線與平面的距離98
5.4.6 空間兩直線的距離99
5.4.7 三角形的有向面積99
5.4.8 平面多角形面積100
5.5 本章總結100
第6章 二維計算101
6.1 二維布爾運算101
6.1.1 基本原理101
6.1.2 兩個環的幾何運算的實施102
6.1.3 兩個環運算時奇異情況處理104
6.1.4 兩個環運算的算法107
6.1.5 算法復雜性分析108
6.2 二維幾何裁剪108
6.2.1 線性裁剪108
6.2.2 Cohen-Sutherland線裁剪110
6.2.3 Cyrus-Beck任意凸多邊形參數化線裁剪112
6.2.4 Liang-Barsky裁剪算法118
6.2.5 基于降維的二維裁剪121
6.2.6 四種矩形窗口裁剪效果分析1