第一五七章 幾何約束

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月份。

第四十三章 飛龍初議 設計不易第五十八章 飛龍立項 獨立負責第四十八章 考試優先 飛龍延後第一章:天降異雷 莊周夢蝶第一二六章 支援第五十四章 除夕夜話 鵬城計劃第一一零章 雨中試飛第四十六章 設計複雜 開始建模第十四章 瘋狂模式 鯨吞虎噬第十一章 大一結束 計劃開始第一二六章 支援第一二零章 炮戰第一三八章 人才問題第七十五章 黑白鷹眼第三十章 特技設計 飛行訓練第四十五章 大涵道比 設計不易第八十五章 推銷第四十一章 全校合力 遠方來電第一百章 軍方來了第八十二章 考察飛龍第一零八章 傳音2第一三四章 抵達第四十章 列車臥談 籌劃生產第九十章 實彈試射第九十章 實彈試射第二十二章 假期結束 成果斐然第十九章 航發子系統第五十四章 除夕夜話 鵬城計劃第五章 初識學霸 猶如神助第一二三章 大勝第八十七章 試射準備工作第九十七章 驪山軍演3第五十八章 飛龍立項 獨立負責第九十二章 三營來訪第九十二章 三營來訪第四十章 列車臥談 籌劃生產第十一章 大一結束 計劃開始第一四九章 客座教授第九章 院長有請 侃侃而談第三十七章 推銷航模 達成協議第一二六章 支援第一四七章 有償服務第九十七章 驪山軍演3第一二一章 夜戰第三十五章 橫空出世 橫掃比賽第九十四章 偵察演習2第一一八章 序幕第四十八章 考試優先 飛龍延後第一章:天降異雷 莊周夢蝶第一四二章 賽前2第四十六章 設計複雜 開始建模第四章雞肋雞肋 食之?棄之?第六十五章 修改方案第八十八章 開始試射第一五八章 問題越來越多第十九章 航發子系統第一一九章 提前開始第一二八章 兼顧第六十三章 放下芥蒂 合作研發第九章 院長有請 侃侃而談第二十四章 開始試製 齊頭並進第十二章預計不足 裹足不前第三十八章 夜訪嬸嬸 合作外貿第二十九章 試飛大綱 全部完成第五十六章 新的合作 戈力出世第四十九章 飛龍擱置 備戰考試第一三七章 設計第四章雞肋雞肋 食之?棄之?第六章 組團複習 團隊初成第一四零章 故人第一三一章 鵬城消息第八十章 防空警報第七十章 LT-3測試第二十二章 假期結束 成果斐然第二章:慰問連連,從頭開始第九十章 實彈試射第十九章 航發子系統第六十章 飛龍航發 開始測試第五十六章 新的合作 戈力出世第二章:慰問連連,從頭開始第五十七章 初步設想 四大件第三章 一語驚醒 砥礪前行第七十七章 組裝完成 試飛計劃第七章 機械加工 任重道遠第一二四章 結束第76章 圖像數據處理第一三七章 設計第七十七章 組裝完成 試飛計劃第一三五章 電風扇第二十三章 院長再請 準備試製第一二五章 戰後第八十八章 開始試射第九十七章 驪山軍演3第一四五章 賽後第一五六章 方向第二十七章 院長三招 整機裝配第七十章 LT-3測試第五十二章 靈光一現 明竹從商第一二四章 結束