2012-05-27 85 views
1

我想從體素中繪製一個平面,目標是繪製它填充,我有很多麻煩。我嘗試的每件事都會導致表面上的孔洞。表面有4個角,但我希望能夠對三角形使用相同的方法。3D體素角平面

這是我已經試過:

  • 從一個平行的側沿平面的一側沿划向其他
  • 畫出只在一個方向(Z方向)

我用2獲得了最大的成功,但當我在飛機上添加任何俯仰或滾轉時(任何提升),都失敗了。

任何提示?沒有代碼,因爲我確定我的實現都是正確的,只是算法的選擇是錯誤的。

編輯:

在一個側面說明,儘管2號過少孔,在飛機被扭曲,並沒有出現持平。

EDIT2:

我和我的第一個決定堅持,但現在的問題是,我怎樣檢測的時候會有一個洞?通過觀察,我發現每個平面上都有相同數量的孔,無論俯仰和滾轉如何。偏航是這裏的罪魁禍首。

EDIT3:

我要離開這個問題了,但我決定只測試一個附近的塊,看它是否是空的。我不想這樣做,但是。如果你有一個更優雅的解決方案,我非常喜歡。

回答

1

一個無限的平面沒有角落。你在談論一個四邊形多邊形嗎?它有方角嗎?

對於多邊形,我肯定會以三角形開始,因爲您可以用三角形構造任何其他多邊形,而不是相反。

然後,填充三角形的一個好的開始可能會拿出一個準確的測試,以確定給定的體素是否應該被填充。 Here是兩個不同的三角形點測試的例子。

在你有了之後,你可以用不同的方式繼續。例如,儘管不是最有效的,但您可以從中心區域增長,測試每個相鄰體素並使用堆棧遞歸。

+0

謝謝!我做了一個非常低效的算法,它基於文章中的算法。我需要做重大的優化,但是,它會起作用。它迭代圍繞三角形的立方體,它在該頁面中使用相同的方法進行測試,但對於投影到平面(X,Y或Z)上的三個二維三角形進行測試。這決定了該點是否在三角形「金字塔」區域。然後使用平面方程,並將點減去任何已知點並用三角形的法線點出。針對給定的不確定性參數測試點積值,例如, dot> = -u && dot <= u。 – SpaceFace