start with some random points. grow circles around them, all circles growing at the same rate. a circle stops growing when it touches another circle. this results in a circle packing. (not a very tight circle packing: what is a better way to generate denser random circle packings? maybe Apollonian gasket.)
same thing but with axis-aligned growing squares instead of circles. what is the nature of the space outside of all squares after they have grown as much as possible? is it typically connected?
similar thing with rectangles. when a side touches another side, growth stops only in that direction. the other 3 sides keep growing until they too are each impeded. there needs to be an exterior bounding box. vaguely has a similar feeling to Voronoi partition. with this much additional freedom to grow compared to squares, there probably will not be much remaining space, and the remaining space probably won't be very connected.
same thing except with bricks (rectangular parallelepipeds) in 3D. 3D probably has enough space for the gaps between bricks to typically remain connected.
motivation is to generate a cave system for a game, a collection of rooms connected by twisty passages. with bricks, everything axis-aligned is like Minecraft. we want rooms and passages to have distinctive shapes. probably best if character can climb everywhere, including ceiling.
define a room to be a gap large enough to fit a cube of given size. (or sphere?) what is the extent of a room? define a center as a point surrounded by an empty cube of the given size, then define a room from the connected component of centers. devilish detail remains of choosing the size of the probe cube.
bricks could grow at different rates, or not all start growing at the same time. inspired by crystal growth in the Cave of the Crystals. the cave is the free space not occupied by crystals.
"epoxy" to fill in gaps. tunneling to make more passages.
No comments :
Post a Comment