從STL檔案到網格拓撲

2021-08-05 21:53:50 字數 2160 閱讀 9853

stl檔案是什麼

stl檔案是網格檔案的一種格式,分為二進位制和文字兩種型別。具體來講,它定義了一群三角麵片,比如下面是乙個文字的stl示例:

solid geometryplusplus

facet normal

-0.902325

-0.430279

-0.0258872

outer loop

vertex

-86.941

-297.521

-115.031

vertex

-87.0579

-297.277

-115.053

vertex

-86.9864

-297.4

-115.516

endloop

endfacet

facet normal

-0.94428

-0.0796825

0.319353

outer loop

vertex

-87.2002

-296.181

-112.896

vertex

-87.0852

-296.215

-112.573

vertex

-87.1714

-295.916

-112.749

endloop

endfacet

facet normal

-0.987853

0.0260761

-0.153187

outer loop

vertex

-86.8988

-294.403

-120.439

vertex

-86.7915

-294.399

-121.13

vertex

-86.8956

-294.772

-120.527

endloop

endfacet

endsolid geometryplusplus

網格拓撲是什麼?為什麼不建議使用stl格式

網格本質上是曲面的一次逼近,它有兩個核心的量:幾何和拓撲。幾何資訊通過頂點位置來記錄,而拓撲資訊通過三角網格的連線關係來記錄。曲面移出掉幾何資訊,就只剩下拓撲資訊了。比如橡皮泥,你可以任意改變它的形狀,只要不撕裂它,那麼它的拓撲資訊是不變的。所以,關於網格的計算,不僅需要幾何的正確性,拓撲的正確性也是極其重要,卻又是極容易被人忽略的。stl檔案格式,其實並沒有記錄網格的連線關係,只是一群三角麵片,有個英文名詞叫******** soup,說的就是這種格式。為了給stl格式的網格建立網格連線關係,常見的做法是把位置重疊的點融合成乙個點。但是這種做法,也讓stl格式不能表達帶割縫的網格結構了。所以,不建議使用stl格式來儲存網格。可以使用obj格式來代替它。

網格頂點數和麵數的關係

拓撲學的尤拉公式描述了網格頂點,邊和麵之間的關係:v - e + f = x. 其中v是網格頂點數,e是網格邊數,f是網格面數,x是網格的尤拉示性數,是乙個拓撲不變數。在網格點數很多的情況下,有下面這個近似關係:e = 3 * f / 2, x = 0。帶入尤拉公式後,有近似關係:f = 2 * v。注意,如果匯入乙個stl網格,並且沒有做頂點融合,v = 3 * f。所以,根據頂點和麵的數量關係,可以判斷匯入的stl是否做了頂點融合。

網格虧格

簡單的講,網格的虧格(g)就是網格上「環柄」的數量,如下圖所示,球體虧格為0,環體為1......尤拉示性數x = 2 - 2 * g, 如果網格有洞,則x = 2 - 2 * g - b. 在網格uv展開中,需要將網格剪開成圓盤拓撲,需要至少g + 1刀。

每個三角麵片都有乙個定向,比如v0, v1, v2,如下圖左所示。相鄰邊的定向如果是相反的,則為相容的。如果網格所有的定向都是相容的,則為可定向曲面,反之為不可定向曲面。莫比烏斯帶是有名的不可定向曲面,它只有一面:乙個人從某點出發,繞帶環遊一圈回來後,則站在了這點的背面。

three park(三維公園)

電源拓撲從入門到精通 2

from 上期答案揭曉 答案上圖 c 下圖 a 小夥伴們答對了嗎?ytdfwangwei 我的笨辦法 source,源的意思,就是提供電流。所以,只要是電流流出,就是source。不知道是否正確?完全正確。sink 和 source 是在電路中經常出現的兩個詞。source 源,比如電源,源總是提供...

stl 輸出unicode到檔案中

在vs2008中,如果專案設定了unicode字符集,把中文輸出到檔案中經常會遇到錯誤。在mfc專案中,可以使用以下語句來實現unicode到多位元組字元的轉換 uses conversion cstring strlog t 我愛大家 const char cplog const char w2a...

從檔案到字元裝置

在 dev下面有很多裝置,其中也有大家廣為使用的字元裝置,呢裡面的檔案是如何與字元裝置掛鉤的呢 平時我們使用的open函式是如何動態載入字元裝置的操作集的呢 下面就讓我們慢慢剖析 以核心2.6.26為參考 一.首先是檔案系統 需要動態解析檔案路徑名 像 dev ts0 在檔案系統裡分為3個部分 1....