2011-04-09 159 views

回答

3

如果您需要可用於數值模擬的網格,那是一箇中等難度的問題。如果你只需要一個表面網格的圖形,這很容易。在每個圓形面的中心放置一個頂點。使用一個圓的參數方程(x = r cos t,y = r sin t)計算一系列圍繞人臉邊緣的節點。然後,您使用該中心節點和一對邊緣節點製作一堆長長的三角形以覆蓋兩端。最後,想象一下圍繞圓柱體兩側纏繞的一束長而瘦的矩形,由相同的節點定義;將每個對角線分成兩半以形成一對三角形。

0

從最低的多邊形圓柱開始 - 想象頂部的三角形和底部的三角形,每個頂點都有頂點#1,2和3.調用頂部的三角形A和底部的三角形B.創建以下多邊形:

  • A1,A2,B1
  • B1,B2,A2
  • A2,A3,B2
  • B2,B3,A2
  • A3,A1,B3
  • B3,B1,A 1

換句話說:

for(int i = 0; i < vertices; i++) 
{ 
    polyList.add(circleVertices1[i], circleVertices1[(i+1) % vertices], circleVertices2[i]); 
    polyList.add(circleVertices2[i], circleVertices2[(i+1) % vertices], circleVertices1[(i+1) % vertices]); 
} 

這只是我的頭頂部,但它似乎是有道理的。這不包括結尾的圈子,但我現在假設你可以找出圈子。

2

如果我們假設你真的想有良好的縱橫比的三角形(各方互相成比例),要做就做最好的辦法是遵循EF山的最後一個建議:

鴻溝每一個半對角地做一對三角形。

沿着圓柱體的長度會有幾排三角形;它不會只是一組矩形。

關鍵是要從圍繞周圍選擇你想要的數量開始。周邊十週是指每個周邊覆蓋36度; 20將意味着每個涵蓋18度。一旦你有了,選擇長度的數字,以便間距等於第一維的和絃的長度。然後沿每個對角線切片以製作三角形。

頂部和底部圓柱體由三角形平鋪,從圓心畫出線條以滿足由圓周上第一行和最後一行矩形創建的點。

根據您如何忠實地再現圓柱表面來選擇數字。

0

你可以通過計算幾何圖形在程序上繪製一個圓柱體。如果你想用它來渲染(大多數情況下),你應該使它支持triangle stripping如果性能很重要,你也可以計算映射座標和可能的法線。所以從頭開始需要一些思考,但如果你理解數學,這是可行的。

我已經在C#中爲Unity3D創建了一個模塊,它完全可以做到這一點,並允許您調整參數。觀看video瞭解詳情,並從GitHub下載代碼。