日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

草图几何约束求解

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 草图几何约束求解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現代計算機輔助設計系統通常依賴二維草圖為基礎來創建大多數三維幾何圖形。這些草圖中的形狀以及它們的幾何信息加上它們之間的一系列約束,被用于量化組成草圖的各個線段、圓、弧和樣條曲線的精確大小和形狀。示例約束包括總體長度、對稱性、平行和/或垂直段以及圓弧半徑。對于一個給定的草圖,有許多約束集可以明確地定義該形狀。示例約束包括長度、對稱性、平行或垂直線段段以及圓弧半徑。對于一個給定的草圖,有不同得約束組合可以明確地定義該形狀。但更多的時候,用戶采用的約束組合無法準確定義形狀,致使與用戶的預期不符。所以用戶提供關于如何更改約束定義來補救該問題的反饋就是一個棘手的問題。本文描述了一系列幫助用戶診斷約束問題的技術方案,通過這項方案向用戶提供一系列選項,以使草圖約束問題得到正確的處理。

一、介紹

在大多數計算機輔助設計(CAD)系統中,二維草圖是允許生成三維模型的基本元素。創建草圖的方法通常是從一般形狀開始,然后添加一組特定的約束來生成預期圖形。草圖約束的例子有線段長度、半徑、夾角、平行等。通常,用戶需要不斷對草圖中的線段、圓弧和樣條曲線等添加相互關聯的約束條件。然后,約束求解器負責更新彼此之間的幾何關系,并提供預覽效果供用戶參考。

草圖的概念起源于第一個圖形系統,它是在20世紀50年代中期在林肯實驗室的麻省理工學院開發出來的。1960年,在麻省理工學院實驗室開發的一個叫做素描板的項目為CAD行業邁出了第一步。隨著時間的推移,草圖的概念與“參數化”的概念緊密聯系。自從引入參數化以來,大多數開發者的關注點都集中在集成參數化上,而很少關注幫助用戶理解如何正確地約束草圖。

本文介紹了以用戶為導向約束求解的一種方案。由于其純粹性使得它可以用于任何CAD系統的實現。

二、草圖求解方案

草圖是由線段、圓弧和樣條曲線組成的二維圖形。圖1顯示了由三個線段和一個弧組成的非常簡單的草圖。在圖上的是幾個字母和數字,它們描述了用戶為“解決”草圖而指定的約束條件。

表1定義了草圖中這些字母的含義。表1中的“臨時固定”約束是求解器在診斷草圖時添加的臨時約束;它們將在下一節中進一步討論。人們可能會注意到,共線點和共線中心在圖上都用“c”表示;區別在于共線點把“c”放在頂點上,共線中心把“c”放在弧的中心。共線性、距離關系和長度關系的約束將在后面的例子中進行解釋和證明。

由于幾乎所有的約束都引用了一個頂點數,所以其他每個頂點數都被標記在圖上,如圖1所示。請注意,所有的線段和線弧都使用它的起始頂點進行標記,這是通過繞著圖的逆時針方向來確定的

約束名約束描述約束名約束描述
X臨時固定 X分量l長度
Y臨時固定 Y分量lr長度關系
C臨時固定 曲率h水平
x固定x分量v垂直
y固定y分量i傾角
p夾角垂直r半徑
t相切T圓弧轉角
c共線點c共線中心
d距離關系

表1 簡易的約束對照表

根據霍夫曼和維米爾的理論,求解約束系統有四種基本方法:

1、數值法:基于代數方法的幾何約束求解方法,簡單地說,是指首先通過建立一個坐標系將幾何約束轉化為一組代數方程組,繼而采用數值計算的方法和符號計算的方法求解。其中Newton-Raphson 方法(簡稱牛頓法)是數值計算中用得最多的一種方法。這種方法的求解速度快,但是需要一個好的初值而且對初值的選取比較感。

2、符號法:符號方法也是先將約束轉化為一組代數方程,然后采用符號推理的方法,如 Wu-Ritt分解算法或 Grobner 基方法將方程組映射成符號系統來實現非線性方程組的分解,最后采用數值方法求解。

3、規則法:阿爾德菲爾德提出的基于規則的約束構造法,將手工繪圖的過程分解為最基本的作圖規則,運用經典的人工智能的符號運算、知識表達、匹配技術,采用通用的推理機進行幾何推理與計算,從而得到滿足約束的幾何圖形。

4、圖構造法:基于圖的求解方法首先分析約束,得到反映約束對象之間依賴關系和求解次序的約束依賴圖(簡稱約束圖),然后根據約束圖進行約束求解得到最終的設計結果。

數值法由于其通用性,是最常用的方法,是本文描述的技術的基礎。

殘差方程

牛頓法法是通過調整草圖的自由變量,將一組殘差R(每個殘差都來自用戶指定的約束)驅動為零。對于圖1中的草圖,變量是x和y頂點位置以及弧曲率C。

xT=[x1y1x2y2x3y3x4y4C3]x^T=\begin{bmatrix}x_1&y_1&x_2&y_2&x_3&y_3&x_4&y_4&C3 \end{bmatrix}xT=[x1??y1??x2??y2??x3??y3??x4??y4??C3?]
(1)

系統中變量的數量決定了定義約束方程的數量,這是唯一地求解草圖和定位頂點坐標所必需的。這個例子有9個變量,因此需要9個殘差方程來定義草圖。如等式(1)所示:

表2 定義殘差方程

表2中的殘差方程全部排列好,當求解草圖并滿足約束條件時,殘差將消失(為0或無限接近于0)。注意,相切函數,這里沒有具體的實現,你可以根據你自己的實際情況來定義相切方程。
牛頓方法使用了一個由?Rn/?Xn定義的雅可比矩陣。該問題是用一個矩陣系統來建立的,如等式(2)所示:

(2)

通過將一個點(初始或當前猜測)線性化,并應用有限差分表達式來求解雅可比矩陣中的單個項。通過約束公式的符號微分來直接評價導數是可能的,但在目前的工作中已被發現沒有什么好處。為了用迭代的方法求解方程組,每次迭代都更新?x向量,將R向量驅動為零。當R向量的最大值小于給定的公差,迭代停止,認為求解完成。

在等式中的矩陣(2)設置的優勢是,如果定義準確,任何的問題將被解決。

該數值方法用于尋找草圖解,因為給定一個定義良好的系統和高質量的初始值,該方法總是會找到一個解。該系統的主要缺點是它依賴于初始條件,以及迭代方法可能會很耗時。盡管有這些缺點,理論上用數值方法能夠解決任何定義良好的約束問題。

三、診斷草圖問題

為了進一步演示,將使用圖2所示的草圖。這個草圖由8個頂點和三個弧的曲率定義,總共有19個變量,如等式(3)所示:
xT=[x1y1x2y2x3y3x4y4x5y5x6y6x7y7x8y8C1C2C7]x^T= \begin{bmatrix} x_1 & y_1 & x_2 & y_2 & x_3 & y_3 & x_4 & y_4 & x_5 & y_5 & x_6 & y_6 & x_7 & y_7 & x_8 & y_8 & C_1 & C_2 & C_7 \end{bmatrix}xT=[x1??y1??x2??y2??x3??y3??x4??y4??x5??y5??x6??y6??x7??y7??x8??y8??C1??C2??C7??]
(3)

此草圖使用了長度關系,這是用于關聯不同長度的約束條件。在這個測試草圖中,使用一個“長度關系”來定義段4-5段是段6-7段長度的三倍。標簽只出現在圖5中(后面)關系的第一段上。

完全約束的結果如圖2所示:

用于定義此定義的約束草圖如表3所示。雖然圖2可能看起來并不復雜,但有許多不同的方法來定義草圖的約束,以得到一個完全約束的系統,這是最終的目標。表中顯示的約束只是完全定義所需草圖的各種方法中的一種,這將在后面詳細探討。

一個草圖可以分為四種不同的狀態之一;完全約束、過度約束、欠約束或不當約束。一個完全約束的系統具有適當數量的約束,并且是可解的,因為在沒有奇點存在,這導致了草圖的一個明確的解決方案。過度約束系統有太多的約束,這些約束可能也可能不能正確地定義草圖。一個欠約束的系統沒有足夠的約束來唯一地定義草圖,需要繼續添加約束。不適當的約束系統具有正確數量的約束條件,但可能存在相互沖突的約束條件,從而導致一個奇點,而某些坐標是不可解的。下面將描述每種情況。

欠約束 Under-Constrained

大多數CAD系統將識別給定草圖上的約束狀態。商業系統對可以添加的約束類型也有限制;因此,在ProEngen5中對草圖的定義方式和之前的定義方式略有不同。本商業包裝中沒有整體長度和高度的限制。此外,要使用長度關系,必須定義其中一個長度,這與在我們在上面草圖求解器中使用的長度不同。

當確定約束系統的狀態時,原工程師采用了一種獨特的方法。項目工程師為防止草圖因其意圖而在約束下開始。作為對象(直線、圓弧等)被添加到草圖中,添加“弱”約束,這是純粹的維度約束,創建和維護一個完全定義的草圖。用戶向系統中添加約束以創建所需的對象,隨著約束的添加,自動添加的弱約束將被刪除。雖然這使復雜草圖的系統處于可解狀態,但添加的尺寸通常不是用戶真正想要定義的,并且沒有關于可以添加哪些其他約束的反饋。使用我們在原工程師中的測試形狀,完全定義的草圖如圖3所示。當我們去掉段8-1(底部水平段)的長度時,給圖4所示的形狀增加了一個新的尺寸。

在草圖求解器中,草圖是根據用戶的反饋進行診斷和修復的,而不是像在項目工程師中那樣自動修補。系統首先通過行簡化雅可比矩陣來識別奇點的位置。對于一個定義良好的系統,行縮減將會產生單位矩陣,但對于欠約束的系統,將至少會有一個零列。奇點的位置,由一個零列標識,顯示了哪個參數是未定義的。

草圖求解器會暫時為缺失的參數添加一個固定點,并再次檢查該矩陣。之所以使用這種迭代方法,是因為它有可能在約束系統中普遍存在多個問題。如果矩陣只有一個問題,那么就不需要臨時約束。一旦所有的奇點都被替換為臨時不動點,求解器將逐個檢查表4中的所有約束,以確定對用戶有意義的替換。

頂點約束線段約束
固定x分量長度
固定y分量水平
夾角垂直垂直
相切半徑
折轉角
表4 要添加到草圖中的約束選項

其中一些約束需要值,如長度、半徑和轉彎角;對于這些,來自用戶繪制草圖的初始預估值用作約束的值。對于垂直度,約束可以是凸的或凹的交點。在所有這些實例中,用于驗證約束的自動生成的值都將顯示給用戶,然后要求用戶提供一個值。用戶使用的內部值只是為用戶提供指導,以幫助選擇合適的值。如果用戶輸入的值與測試的值差異太大,矩陣可能會發展一個奇點并導致牛頓求解器發散;有關更多細節,請參閱實現問題部分。

為了演示來自草圖器的反饋,我們從表3中刪除了兩個約束條件。刪除的約束垂直于頂點6(靠近圖左側的內角)和水平段3-4(在頂部)。去除這些約束會導致一個定義不足的草圖,無法解決y6和曲率C2的位置,如圖5所示。

在添加這些臨時約束之后,用戶將給出替換臨時固定的y6的所有可能選項,以選擇要添加到系統中的選項。本案例有9種可能的選擇,如圖6所示。

對于這個示例,用戶選擇在頂點6處添加凹垂直度,這是從原始完全定義的系統中刪除的約束;呈現給用戶的九個選項中的任何一個都將允許草圖被求解。由于從系統中刪除了兩個約束,因此還有另一個臨時約束需要用一個更符合用戶設計意圖的約束來替換。

有15個選項可以替換臨時固定的C2點,如圖7所示。

選擇段3-4是水平的選項將導致最初使用的相同的約束集和相同的圖形。與前面一樣,這15個選項中的任何一個都將產生一個完全定義的草圖。

該系統的優點是,添加的約束是暫時的,僅僅是識別當前草圖系統的所有問題的一個步驟,并被用戶選擇的約束所取代。為未定義的草圖替換臨時約束的過程同樣用于修復不適當約束的系統(后面將描述)。

過約束 Over-Constrained

過約束的草圖是所有被測試的商業CAD系統都承認并提供一些修復建議的唯一狀態。在AutoCAD中,當添加一個新的約束導致系統過渡約束時,通知用戶添加該約束將過度約束系統,因此不能添加,如圖8所示。AutoCAD對如何解決該問題沒有提供任何幫助,而只通知用戶存在該問題。

從所顯示的消息來看,AutoCAD并不區分不正確和過度約束的系統。如果不清楚所有的約束都應該是什么,這可能會使一個完全定義的草圖難以獲得。另一個挑戰是AutoCAD不允許某些約束(例如在圖2中的頂點1處的垂直度約束)。為了繞過這一點,下一個邏輯約束將是將圓弧1的中心設置為與線段8-1共線。共線性約束,與其他約束一起,將在該頂點保持垂直交點。遺憾的是,這也不是AutoCAD中的一個選項,演示提供如何完全約束草圖的建議對用戶有幫助。

項目工程師提供了更多的信息,發布一個窗口,標識與被添加的約束沖突的約束,并允許用戶選擇刪除哪個,如圖9所示。

修復草圖以更好地限制原工程師當然更友好;然而,這對所有的情況都沒有幫助。偶爾,每個約束都作為一個選項呈現出來,這可能實際上對用戶沒有幫助。SolidWorks查看了一個過度約束的草圖,并提供了一個手動修復或診斷工具。手動修復類似于原始工程師,因為它只是提供了一個相互沖突的約束條件的列表。該診斷工具更為復雜,使用起來需要時間。診斷工具消除了相互沖突的約束,并提供了解決方案來修復草圖的適當約束。圖10顯示了提供給用戶的反饋的一個示例。

SolidWorks中的診斷工具提供了修復草圖的所有選項,在選擇之后,草圖將完全定義。注意,雖然在診斷工具中,草圖在用戶進行選擇之前定義不足。草圖通過基于草圖的靈敏度對解決方案進行排序,進一步提高了這個反饋,并提出了在最終草圖中與原始猜測差異最小的選項,將在靈敏度部分中進一步討論。

草圖求解器識別冗余的約束選項,并通過在圖中以紅色突出顯示約束來將它們呈現給用戶。然后,用戶可以選擇從系統中刪除哪些約束,以生成一個完全定義的系統。下一節將使用一個例子來演示過度約束的反饋。

不適當約束 Improperly Constrained

診斷不當約束系統使用欠約束和過約束方法的組合。首先,需要確定未確定的坐標,這與欠約束問題的處理方式相同。要向問題添加臨時約束,草圖將成為過度約束,并且臨時約束必須替換系統中的當前約束之一。標識可以添加臨時約束的執行方式與過度約束的系統相同。一旦約束系統具有適當數量的約束,并且能夠確定所有的坐標,草圖求解器就可以像以前一樣開始替換臨時約束的過程。

專業的工程師和SolidWorks除了不允許添加沖突約束的對話框外,都沒有為不適當約束的系統提供任何反饋。這樣做的問題是,有時有些約束比其他約束更重要,而且約束不一定是由用戶按重要性的順序添加的。在商業CAD系統中,如果沒有關于沖突約束的信息,用戶可以嘗試找出問題在哪里,或者重新開始,并希望得到更好的結果。

使用圖2所示的草圖,并修改約束得到一個不當約束問題,可以演示草圖求解器。將頂點6(靠近圖左側的內角)處的垂直度約束替換為弧2半徑(右側較大的頂部弧)的設定值,將創建冗余信息。y6的位置不能用這個方程組來確定,因此必須添加一個臨時的約束。然而,一個不適當的約束系統有9個約束。為了給方程組添加一個臨時的約束,必須刪除一個方程組。圖11顯示了可以用臨時固定點替換的約束選項。

對于這種特殊情況,只有一個選項可用來消除約束。一旦將所有必要的臨時固定點約束添加到系統中,草圖求解器將尋找替換之前的臨時約束的選項,如圖12所示。當前的設置將產生8個選項來替換臨時約束。

其中的任何一個都可以被選擇來得到一個完全約束的系統。這些選項以有序列表的形式呈現給用戶,首先列出與原始猜測偏差最小的選項。

四、示例和過程中問題

圖2中定義的草圖已用于演示草圖求解器在不同情況下將提供的各種類型的反饋。草圖求解器也已經使用更復雜的、真實世界的草圖進行了測試。圖13中的草圖是工程圖形7中的一部分的改編,使用OpenCSM素描圖復制。

并不是所有的草圖約束都在工程圖紙中被清楚地識別出來,求解器被用于幫助確定完全定義系統所必需的一些最終約束。

這個草圖也提供了一個例子來討論“距離關系”是什么,特別是因為它通常用于描述機械部件。距離關系是從頂點到直線的約束。例如,在圖13中,頂點3距離圖的右側有3.30英寸。這在頂點用“d”標記。與長度關系相似,只有該關系中的第一個頂點被標記。

這個新系統面臨的最大挑戰是奇點問題。最終,草圖的狀態依賴于由約束和初始或當前猜測產生的雅可比矩陣。奇異雅可比矩陣是兩個問題之一的指示:一個錯誤的猜測或一個不正確的約束方程。當用戶通過在空間中放置點來在屏幕上繪制圖形時,就可以獲得初始猜測。因此,對頂點的位置得到了一個合理的初始猜測。當向系統添加約束時,最初的猜測可能會產生一個通過選擇智能約束來解決的問題。

首先,人們可以預測,如果一個矩陣有一個奇異點,當矩陣最初建立時會很明顯。然而,由于牛頓法中固有的迭代過程,一個奇點可能會在幾次迭代后“出現”。例如,初始猜測可能在水平段兩端的y值上有差異,當求解草圖時,當水平約束滿足了時,這個差異會變小。如果在同一段上也有長度約束,則當滿足水平約束時,段兩端的y坐標可能成為未定義。

在替換臨時約束時,也會考慮到同樣的問題。如果草圖求解器試圖確定一個y值,并且線段幾乎是水平的,那么線段的長度將在幾次迭代后產生一個奇點。這是因為水平段的長度只依賴于水平段兩端的x值。這將是一個很差的約束選擇,所以草圖求解器在這些情況下不會測試長度。

當一些約束得到滿足時,奇點“出現”在矩陣中的問題,使得簡單地看雅可比矩陣不足以確定添加該約束是否是一個合理的選擇。為了防止在最終草圖中出現問題,矩陣被每個約束測試完全約束,以確定被測試的約束的有效性。

草圖器的功能是巨大的,并為用戶提供有價值的反饋,以幫助創建和維護一個完全定義的草圖。如前所述,檢查所有的約束選項可能是一個耗時的過程。除了只檢查不會產生奇點的合理選項外,直觀上的壞約束也會被跳過。例如,檢查線段的長度,但如果線段是弧,則跳過長度。類似地,半徑和轉彎角約束只檢查弧,因為它們不適用于線性問題。

五、敏感

除了發現和糾正奇點問題外,還有敏感性問題。偶爾,在設計過程中,用戶可能想知道的不僅僅是解決方案是什么。當試圖優化一個形狀以滿足其他一些工程目標時,每個點對其中一個約束條件中的擾動的敏感性可以是有價值的信息。例如,再次查看圖2中的測試草圖,用戶可能需要稍微改變總長度,以滿足空氣動力學目標。當改變一個約束時,就會對整個系統產生影響,并且某些點比其他點受到的影響更大。

了解每個頂點如何受到不同約束的影響,可以為設計者提供有價值的信息,了解在其他領域可以進行影響最小的更改。靈敏度矩陣可以簡單地使用有限差分來確定,如等式所示 (4)。

(5)

檢查這個矩陣的單個元素可以闡明靈敏度矩陣是如何形成的。例如,在等式中(5)L是總長度,它是9個單位,然后擾動為9.02個單位,以找到第二個頂點的x坐標對總長度約束的敏感性。靈敏度矩陣的每個元素都使用相同的過程找到。全靈敏度矩陣的轉置如表5所示,其中每個約束方程都被2π/180擾動。轉置矩陣的行表示如表3所示的約束方程,列是每個點的x和y位置,然后是三個弧曲率。

從靈敏度矩陣來看,每個約束對系統的每個定義坐標的影響是清楚的。例如,看看轉置的靈敏度矩陣的第一行,我們可以看到只有x坐標受到第一個約束(固定的x1)中的擾動的影響。這一觀察結果既合乎邏輯又微不足道。然而,最后一個約束(圓弧1的固定半徑)對草圖另一邊的x坐標的影響很小或沒有影響,這在直觀上并不明顯,但通過靈敏度矩陣很容易看出。

靈敏度信息在繪制器中用于對解進行排序,通過將使所有頂點最接近初始猜測的解首先進行排序。對于一個復雜的草圖,哪種約束替換是最好的,哪一個最接近用戶的意圖,因此對解決方案進行排序可以幫助用戶決定添加哪個約束。

六、摘要

草圖是現代幾何生成技術的基石,而理解如何正確地約束它們已經被證明是具有挑戰性的。向用戶提供關于草圖在哪里有約束問題的信息,將幫助用戶以更有效的方式構建草圖。理解敏感性可以幫助工程師就幾何圖形和約束選項做出更明智的優化決策。

七、最后

1、約束問題是幾何內核中的一個核心內容。在成熟的商業CAD軟件中,是否擁有完善的約束功能通常是一個重要的衡量標準。

2、約束問題由于其問題規模的龐大,成為了大部分開發工程都不能輕松面對的問題。

3、本文的目的,主要還是提供一種從數值層面求解約束問題的思路,但其完備性有待檢驗。如果你是一個約束問題的初心者,那么這個思路可以成為你入門的參考。如果你是一個經驗豐富者,那么希望本篇中提到的細節能成為你優化自身產品的建議。

4、目前的主流約束求解器通常都會采用多種策略來進行工作。包括本文所用到的數值法,更為理想的求解模型還需要加入符號法與圖構造法來聯合求解,這又是另一個話題了。

總結

以上是生活随笔為你收集整理的草图几何约束求解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。