Open blakeelias opened 6 years ago
First of all, in order to have bots move around without colliding, I think it's useful if bots can mark cells as reserved for movement: When it needs to go somewhere, it calculates a free path and reserves all the cells on that path and then frees them after it's moved past them.
Similarly, it's useful to be able to reserve cells for filling so that independently acting bots don't try to fill the same space. Marking cells as reserved may also help for avoiding other conflicts.
In that context, the following building blocks seem useful:
t
(skeleton algorithm, should break the model in classes of tunnels and blobs, where a tunnel is a Full region with min(dx, dy, dz) <= t
; Blob is a region that is connected to a tunnel such that min(dx, dy, dz) >= t
. We should know how to merge tunnels and blobs together. Now if the entire model is split into blobs connected by tunnels, we can estimate the costs of filling each entity as well as the amount of robots required).t×t
in each intersection.)
We need a variety of functions available that multiple solvers may need to use.
Board Queries:
has_filled_neighbor(voxel)
)hollow_areas(model)
)outer_surface(hollow_area)
)Bot movement: