介紹
gmesh是一款開源的網格剖分軟體包,除了網格剖分,還提供幾何建模、求解、後處理幾個模組。本文是翻譯自gmesh手冊上的第5章,講幾何建模的。gmesh中的幾何建模模組具有簡單的建模能力,在3d建模上,它只具有生成基本體素和掃瞄體的能力,不具備實體布林運算的能力。因為gmesh也是乙個可執行的程式,所以,建模也是在使用者介面上,以命令的方式進行的。下面是翻譯。
第5章 幾何模組
gmsh的幾何模組提供了簡單的cad引擎,使用的是brep的方法:先定義點(使用點的命令),然後定義線(使用線的命令,如直線、圓、sp線等等,或者通過拉伸點的方法),然後定義面(使用平面或直紋面,或者通過拉伸線的方法),最後定義體(使用體的命令或者通過拉伸面)。
點、線、面、體這些術語就是gmsh中的圖元,當建立這些物件時,會為每乙個物件分配乙個數字編號。
1、每個點圖元必須占用乙個唯一的編號
2、每個線圖元必須占用乙個唯一的編號
3、每個面圖元必須占用乙個唯一的編號
4、每個題圖元必須占用乙個唯一的編號
然後通過各種方法來操作這些幾何圖元,比如,使用平移、旋轉、縮放或映象命令。還可以通過刪除命令來將他們刪除,只要沒有上層的物件引用了他們。
可以定義多個圖元組成的組,他們被稱為「物體的」實體。這些物件是不能通過幾何命令來修改的,使用他們的唯一的目的是,將他們整合到大的組中,也許修改他們的朝向,這樣他們會被mesh模組作為乙個整體。類似於幾何圖元,每乙個物理點、物理線、物理面、物理體,也必須賦予乙個唯一的數字編號。對於物理實體如何影響mesh儲存的方式,詳細見第6章。
5.1 幾何命令
接下來是將各種可用的幾何命令的。這些命令可以在gmsh指令碼檔案中使用。
5.1.1 點
point(exp) = ;
建立點圖元。小括號中的exp是店的編號,花括號中的exp是點在三維歐氏空間中的x,y,z座標。最後乙個可選的引數設定在這個點上的網格單元的尺寸。具體怎麼使用這個值來控制網格單元的尺寸,詳細見6.3.1.
physical point(exp|char-exp) = ;
建立物理點。小括號中的exp是點的編號,如果使用char-exp,會為這個點自動生成乙個編號)。右邊的exp-list是組成這個物理點的所有點圖元的編號。(物理點就是乙個點組)
5.1.2 線
bspline(exp) = ;
建立bspline曲線,小括號中的exp是曲線的編號,花括號中的exp是這個曲線的所有的控制點的編號。
circle(exp) = ;
建立圓弧曲線,嚴格小於半圓弧。同樣,左邊指定圓弧的編號,右邊的引數分別指定:圓弧的起點編號,圓心點的編號,終點的編號。
catmullrom(exp) = ;
是spline的同義詞。
ellipse(exp) = ;
建立橢圓弧,左邊的exp是橢圓弧的編號。右邊的exp分別指定:圓弧起點編號,圓弧中心點編號,主軸上任意點的編號,終點編號。
line(exp) = ;
建立直線段。左邊的exp指定直線的編號,右邊的exp分別指定起點和終點的編號。
spline(exp) = ;
建立spline曲線。左邊exp指定曲線的編號,右邊指定曲線所有控制點的編號。
line loop(exp) = ;
建立有方向的曲線環。左邊的exp指定環的編號。右邊的exp-list指定了組成環的所有線單元的編號。乙個線環必須是首尾相接的,而且,組成環的線單元必須是有序和有向的(使用負的編號來指定反方向)。如果方向是正確的,但順序錯誤,gmsh會重新排序,以建立乙個連續的環。儘管gmsh支援,但不建議在乙個環命令中指定多個環(或子環)。環是用來建立面的。
compound line(exp) = ;
建立復合線,通過幾個線單元。進行網格剖分時,乙個復合的線會被作為乙個單獨的線來重新引數化,因此,網格會跨越內部的邊界。左邊的exp指定線的編號,右邊的exp-list指定需要作為乙個單獨的線來重新引數化的所有線單元。關於復合物件,詳細見復合面。
physical line(exp |char-exp) = ;
建立物理線。左邊的exp指定線的編號,如果是char-exp,會自動為線分配乙個編號。右邊的exp-list指定了組成物理線的所有線的編號(物理線就是乙個線組)。如果在這個exp-list中出現了負的編號,會反轉那些由這些線產生的網格單元的朝向。
5.1.3 面
plane su***ce(exp) = ;
建立乙個平面。左邊的exp指定了平面的編號。右邊的exp-list指定用來定義平面的線環的編號(譯註:環作為平面的邊界,由該邊界來定義面)。第一環是定義平面的外環,其他所有的環都是定義平面上的空洞。乙個定義空洞的環不能與定義外部邊界的環共享一些邊(那種情況下,不是乙個空洞,那2個面應該分別定義)。同樣,定義同乙個面上的空洞的那些環之間不能共享邊(那種情況下,2個空洞應該合併)。
ruled su***ce(exp) = < insphere >;
建立直紋面,比如,乙個能使用無限插值法來進行插值的面。左邊的exp是直紋面的編號,右邊的第乙個exp-list是乙個線環的編號,這個線環應該是由3到4個線單元組成的。可選的in sphere引數,用來表示這個曲面是球面上的一塊(附加的引數指定球心點的編號)。
su***ce loop(exp)= ;
建立乙個面組成的環(就是乙個殼)。小括號中的exp指定殼的編號。右邊的exp-list指定組成這個殼的所有面的編號。乙個面組成的環必須總是代表乙個封閉的殼,面的朝向必須一致(使用負的編號來指定反的朝向)。(面環是用來建立體的)。
compound su***ce(exp) =
建立復合的面,通過幾個面圖元。進行網格剖分時,乙個復合的面會作為乙個單獨的面來重新引數化,因此生成的網格會跨越內部的邊界(面之間的連線邊界)。復合面對已經離散的的模型進行重新網格劃分是非常有用的。
Gmesh的幾何模組
介紹 gmesh是一款開源的網格剖分軟體包,除了網格剖分,還提供幾何建模 求解 後處理幾個模組。本文是翻譯自gmesh手冊上的第5章,講幾何建模的。gmesh中的幾何建模模組具有簡單的建模能力,在3d建模上,它只具有生成基本體素和掃瞄體的能力,不具備實體布林運算的能力。因為gmesh也是乙個可執行的...
Eigen中幾何模組資料演示
1.0 初始化旋轉向量 旋轉角為alpha,旋轉軸為 x,y,z eigen angleaxisd rotation vector alpha,vector3d x,y,z 1.1 旋轉向量轉旋轉矩陣 eigen matrix3d rotation matrix rotation matrix ro...
視覺SLAM學習 Eigen幾何模組使用方法
標頭檔案包含 include include using namespace eigen 旋轉向量 角1 軸3 angleaxisd 旋轉矩陣 3 3 matrix3d 尤拉角 3 1 vector3d 四元數 4 1 quaterniond 歐式變換矩陣 仿射矩陣 射影矩陣 4 4 isometr...