Como alternativa, puede acercarse a este problema, ya que las baldosas amarillas "erosionar" lejos en el azul/fondo. Para hacer esto, en cada paso, haga que un mosaico amarillo agregue un número fijo a la "suma de erosión" E de todas las fichas de fondo que lo rodean en una dirección cardinal (y tal vez una fracción de eso a las fichas de fondo vecinas diagonalmente).
Luego, cuando llega el momento de colocar un nuevo mosaico, puede, para cada mosaico de fondo, elegir un número aleatorio de 0 a E; el más grande es "erosionado". Alternativamente, podría hacer una elección aleatoria simple ponderada, con E siendo sus ponderaciones.
Para baldosas de 2x2 o 3x3, puede elegir solo baldosas que convenientemente "encajen" en un cuadrado de 2x2 o 3x3 (es decir, un azulejo 2x2 o 3x3 en su borde, para que no cause superposición con fichas ya colocadas). Pero, en realidad, nunca obtendrás algo que parezca tan natural como la colocación de baldosas/erosión uno a uno.
Puede ahorrar tiempo recalculando las sumas de erosión haciendo que persistan en cada iteración, solo cuando agrega una nueva loseta, aumente las sumas de erosión de las que la rodean (un simple +=
). En este punto, es esencialmente lo mismo que se sugirió otra respuesta, aunque con una perspectiva/filosofía diferente.
Una cuadrícula muestra de Erosión Así resume E, con los vecinos directos cardinales siendo 4, y los vecinos diagonales siendo 1:
Erosion Sums http://img199.imageshack.us/img199/4766/erosion.png
Los que tienen un mayor E tienen más probabilidades de ser "erosionado" de distancia; por ejemplo, en este caso, las dos entradas pequeñas en las caras oeste y sur son más propensas a ser erosionadas por el amarillo, seguidas por las bahías más pequeñas en las caras norte y este. Lo más probable es que sean los que apenas tocan el amarillo en una esquina. Puede decidir cuál de ellas asignando un número aleatorio de 0 a E para cada azulejo y erosionando el que tiene el número aleatorio más alto, o haciendo una selección aleatoria ponderada simple, o mediante cualquier método de decisión de su elección.
¿Son todas estas fichas idénticas, y quieres que la forma que crean sea orgánica y aleatoria, o tienes un montón de teselas que pueden unirse y quieren que el cuadrado resultante se vea orgánico y aleatorio? –
¿Puede suministrar imágenes o bocetos que ilustren el tipo de cosas que quiere decir? No está claro si la cuadrícula en la que estás pensando es cartesiana o polar. O qué tan orgánico y aleatorio se supone que es. ¿Has intentado simplemente colocar fichas de la manera que describes, y cómo está fallando? – brainjam
Se ha agregado una imagen y más descripción. Mis fichas suelen ser un cuadrado en la imagen, pero pueden ser 2x2 o 3x3 o más en el futuro. –