我有呈現許許多多立方體在一個3維網格呈現應用。這本質上是低效的,因爲每個立方體代表4個頂點,並且通常立方體相鄰,從而創建可以由單個矩形表示的一個表面。算法以適應矩形最少到不規則形狀
要填充區域我使用的3維陣列,其中0值表示空的空間和非0值表示塊。
例如(其中X表示其中,立方體將被放置)
OOOXXXOOOO
OOXXXXXXXO
OOXXXXXXXO
OOXXXXOOOO
將目前被表示爲21個立方體,或252點的三角形,而它可以很容易被表示爲(其中每個字母表示一個矩形的一部分)
OOOAAAOOOO
OOBAAACCCO
OOBAAACCCO
OOBAAAOOOO
這僅僅是一個3個矩形,或26點的三角形。
這些網格的典型尺寸是128x128x128,所以很明顯,如果我可以在合理的時間內將形狀有效地縮小到最少的矩形,我將從大幅度的性能提升中受益,但我對於想法對於算法。
使用Dynamic programming - Largest square block將是一種選擇,但它不會產生最佳答案,但如果解決方案太複雜而無法有效執行,那麼這將不得不順利進行。
最終我將有多種類型的多維數據集(例如綠色,棕色,藍色,在陣列中使用不同的非0號引用),所以如果可能的話,將與多個類別的工作一個版本將是非常有益的。
您的網格中是否有單個「形狀」? – 2011-01-10 14:06:38
這是可能的,可以生成獨立的X.「孤島」(我生成使用根·珀林的單純噪音這些地圖) – 2011-01-10 14:08:41