我有呈现许许多多立方体在一个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