因此,我正在构建基于体素的物理模拟器,可以在其中破坏体素。每个体素化的对象都有一种描述其的“中心体素”,称其为“和平A”。将所有体素模拟为一个,直到将其与“和平A”或与其相连的另一个体素分离,然后将它们(和/或与该体素连接的其他体素)放入具有其自身模拟物理特性的新对象中。这是我的问题所在,如何检查体素是否仍然附着?以最有效的方式?寻路听起来像是当我扩大规模时会降低分配速度,但很乐意尝试找出最佳选择。并在销毁一个体素时立即更新所有体素也听起来不太好。你们有什么天才有想法吗?
这里有一些图纸为了清楚起见(请打扰我不好的鼠标笔迹)
第一张图片,仍然连接了体素:
第二张图片,当体素分离时:
分段/标记是方法(类似于栅格A *和洪水填充)。
为每个体素添加一个标记变量/空格
此标志将用于指示是否使用了体素...并且以后可以用作临时值...
将所有标志清除为零并设置实际对象ID=1
。
用flag=0
拾取第一个体素
将实际对象ID
]充满]
因此使用4或8个连接泛洪将ID填充到体素标志。
增量ID
并转到#3
[不再有flag=0
的体素时停止
在此之后,该标志保存了原始对象被拆分为的子对象ID,ID
保存了新对象的计数+1。