第一五七章 幾何約束

1963年,I.E. Sutherland在他的 Sketchpad系統中第一個採用了用約束定義物體的方法,此法成爲以後約束滿足型智能CA方法的先驅。最早對智能CAD的研究使用專家系統的辦法。國際上最早研究智能CAD的單位是美國的卡耐基-梅隆大學。著名的人工智能學者H.A.Simon和CAD學者Eastma於20世紀70年代中期帶領一批博士研究生研究住宅空間的綜合。澳大利亞悉尼大學以J.S.Gero教授爲首的Design Computing Unit 從研究工程設計優化方法着手,於20世紀 70 年代末開始轉向設計中的人工智能技術。

目前,CAD的研究中存在着三個前沿問題:第一個問題是解決方案的形成,第二個問題是圍繞着設計對象、設計知識的表達展開的研究,第三個問題是圍繞智能CAD系統的自動作圖功能研究,即幾何約束求解。

現在陳東風和楊韋就是想要直接挑戰智能CAD系統這樣的科技前沿,不得不說確實步子邁的有點大。

“昌宏,你說的問題我有思考過,不光是欠約束情況下全參數的方程組求解問題,還有過約束的情況,需要把相同的或者部分重疊的條件進行過濾。其實這個問題歸根到底是幾何約束求解的問題。這個技術不能說是先進,但是確實是幾何引擎成敗的關鍵。我決心要把幾何約束的算法融合到幾何引擎中。”陳東風堅定的說。

楊輝看着陳東風說:“我看這個問題不用爭論了,東風你能把幾何約束的算法搞出來,那麼皆大歡喜,就看你有沒有信心了,不過這種純數學的問題恐怕我是幫不了你了。不過這段時間我會潛心研究C++和幾何引擎的價格,等你計算出幾何約束算法從而解決欠(過)約束情況下全參數方程證求解問題,那麼我們就立即投入到幾何引擎的編程工作中,怎麼樣?”

楊輝的提議是不是辦法的辦法,算法這個核心搞出來了,那麼就成功了一半自然沒有問題。如果陳東風攻克不了這個問題,那麼他的提議也就是沒有了價值,可能幾何引擎這個項目就黃了。

想要理解幾何約束求解那麼就必須要了解什麼是幾何體。幾何體的定義是一個幾何圖形中最基本最具有特徵的幾何元素。例如2維中的點、直線、線段、圓、圓弧和三維中的平面、球面、曲面等。

在幾何體的定義上引申出來的幾何約束的定義是,兩個或多個幾何體之間所具有的幾何關係。例如點與點之間的距離,直線和直線之間的角度,兩條直線垂直,直線與圓相切等。

陳東風自從接過幾何約束的問題後,就全心全意的投入到了其中,他首先將幾何形式的幾何約束進行了分類,不外乎幾何形式的幾何約束和代數代數形式的幾何約束。

幾何形式的幾何約束包括尺寸約束和拓撲約束。

所謂尺寸約束一般是由用戶顯式輸入的。通常包括兩點之間的距離、直線與直線之間的角度、點到直線的距離、半徑約束和兩條平行直線之間的距離等。

所謂拓撲約束束一般是隱含的,是由系統根據草圖自動建立的。通常包括水平約、兩條直線平行和垂直、三點共線、兩個角相等、兩個圓共心等。

根據幾何約束中所涉及的幾何體的個數,還可以將幾何形式的幾何約束分爲三類。一元約束:只涉及一個幾何體的約束。這類幾何約束很少見,例如線段的長度就是一個一元約束。

二元約束:涉及到兩個幾何體的約束,大多數的幾何約束屬於此類。

多元約束:涉及到兩個以上的幾何體的約束。例如三點共線,線段的長度相等,角度相等等。

代數形式的幾何約束包括方程約束和不等式約束。

方程約束:指以方程的形式給出的幾何約束。例如,三角形的面積等於圓的面積。

不等式約束:有時爲了表示點在幾何圖形中的構造順序時會用到,例如,A<B<C<A表示點A,B,C是以順時針的順序構造的。

以上的概念如果總結不出來,那麼對於幾何約束的求解基本上就是一知半解,或者說求出來也是不嚴謹的結果。這個就是基礎理論的研究,很是花費時間但是沒有什麼經濟效益。

用了一個多月的時間陳東風基於以上的基本概念,總結出幾何約束求解的確切定義——給定一個幾何體的集合O和一個關於集合O中的幾何體之間的幾何約束的集合C,那麼二元組(O,C)也就是幾何約束問題。

幾何約束求解的定義清晰後,那麼利用解析幾何的知識,建立直角座標系,將所有給定的幾何約束轉化成一系列表示幾何約束的代數方程,方程中的變量表示幾何體的獨立參數,這樣就將一個幾何約束問題轉化成一個非線性代數方程組的求解問題。然後,用數值計算的方法求解這個方程組,所得到的解就是幾何體的位置座標,即可以構造這個幾何圖形。這就是陳東風設想的基於數值計算的幾何約束求解方法。

先把數值計算方法放到一邊,正如唐昌宏對陳東風質疑,在實際過程中不肯能所有的約束條件都是完美的,總有欠約束或者過約束的時候。

要想提高几何約束求解的交互性和準確性必須要進行幾何約束求解的定性分析——也就是欠、過和完整約束性的判定問題、參數有效範圍的確定問題、多解問題、求解失敗的診斷和誤差的傳播問題等。

陳東風要做的就是給出這樣的一個欠/過約束的完整判定算法,然後在分別針對欠約束和過約束進行完善。

對於欠約束的幾何約束求解問題,陳東風通過設置幾何約束的優先級,給出瞭如何依據幾何約束的優先級添加幾何約束的方法,最後計算出了一個將欠約束的幾何約束求解問題轉化爲完整約束的幾何約束求解問題的算法。

對於過約束的幾何約束求解問題,陳東風首先判定一個過約束的幾何約束求解問題是一致性的還是非一致性的,進而針對兩種不同類型,分別給出將其轉化爲完整約束的幾何約束問題的方法,並提出了算法。

到了這一步才基本上算是完成了幾何引擎中最爲關鍵的幾何約束算法,而這個時間也過去了4個月,已經到了1981年的3月份。

第二十七章 院長三招 整機裝配第一二五章 戰後第五十四章 除夕夜話 鵬城計劃第一二二章 出人意料的變化第十四章 瘋狂模式 鯨吞虎噬第一零六章 組裝調試第一五七章 幾何約束第一零七章 傳音第一零六章 組裝調試第三十九章 合作達成 返回學校第二十章 外形結構 協作完成第一三七章 設計第二十四章 開始試製 齊頭並進第三十四章 賽前準備 驚豔亮相第四十六章 設計複雜 開始建模第一五九章 專業跑項目第一一六章 功能測試第三十二章 到達金陵 遊城半日第六十一章 飛龍航發 點火實驗第一四五章 賽後第九十三章 偵察演習1第一一零章 雨中試飛第一零七章 傳音第十章 考試周中 計劃暑假第一三六章 新型電機第一五六章 方向第一三八章 人才問題第一五九章 專業跑項目第一一一章 謀劃第七章 機械加工 任重道遠第二十三章 院長再請 準備試製第三章 一語驚醒 砥礪前行第一百章 軍方來了第一零九章 午夜槍聲第四十四章 求助院長 二議‘飛龍’第四十七章 模型設計 基本完成第一一四章 風雲再起第一一零章 雨中試飛第七十九章 驪山 黑虎嶺第三十五章 橫空出世 橫掃比賽第一五四章 方向第八十六章 參與演習的機會第七十四章 計算機難題第六十五章 修改方案第七十三章 微波信號第一二二章 出人意料的變化第一五八章 問題越來越多第七十三章 微波信號第一二三章 大勝第六十五章 修改方案第一二二章 出人意料的變化第一二六章 支援第三十八章 夜訪嬸嬸 合作外貿第六十五章 修改方案第一一零章 雨中試飛第三章 一語驚醒 砥礪前行第十一章 大一結束 計劃開始第三十一章 院長帶隊 奔赴金陵第三十七章 推銷航模 達成協議第六十九章 飛龍瘦身 魔改Hong-6第一二零章 炮戰第三十四章 賽前準備 驚豔亮相第三十四章 賽前準備 驚豔亮相第三章 一語驚醒 砥礪前行第十六章 核心機 理論計算第九十三章 偵察演習1第一一三章 清點&amp;amp;總結第七十章 LT-3測試第九十七章 驪山軍演3第六十三章 放下芥蒂 合作研發第二章:慰問連連,從頭開始第一二一章 夜戰第八十七章 試射準備工作第一四五章 賽後第二十章 外形結構 協作完成第一五一章 航模協會第一四三章 賽前3第一三四章 抵達第四十九章 飛龍擱置 備戰考試第九十三章 偵察演習1第一五九章 專業跑項目第七十二章 鷹眼缺陷第五十八章 飛龍立項 獨立負責第四章雞肋雞肋 食之?棄之?第二十七章 院長三招 整機裝配第一五八章 問題越來越多第一一八章 序幕第八十章 防空警報第一六零章 繼續找幫手第一零一章 採購計劃第九十五章 驪山軍演1第一三二章 鵬城消息2第七十一章 鷹眼設計第十章 考試周中 計劃暑假第一五二章 計算機曙光第一二一章 夜戰第四十二章 新的計劃 ‘飛龍’在天第七十四章 計算機難題第一零五章 麻栗坡