Ir al contenido

Autómata celular BlocksCAD generador de copos de nieve

Descripción del modelo 3D

Este es un generador de copos de nieve de autómatas celulares aleatorios y personalizables en BlocksCAD. Se presenta en dos versiones, una versión de 20 niveles (radio de la placa de hasta 20) y una versión de 40 niveles. La versión de 40 niveles está apenas dentro de los límites de las habilidades de BlocksCAD: BlocksCAD se vuelve lento pero todavía funciona (recomiendo usar Firefox en lugar de Chrome para una mejor respuesta).

El autómata pone un hexágono vivo (de colores) en el centro del tablero, y luego sigue las reglas de evolución (como en el[Juego de la Vida] de Conway (https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life)). El conjunto de reglas por defecto (capturas de pantalla en azul más oscuro) esStephen Wolfram's: una célula viva sobrevive para siempre, y una nueva célula se genera cuando tiene exactamente un vecino vivo.

Puede variar el conjunto de reglas variando el efecto que los diferentes números de vecinos vivos (0-6) tienen sobre la supervivencia o la generación. También puede establecer reglas indeterminadas, donde hay probabilidades entre 0 y 1 de supervivencia o generación en los diferentes casos de recuento de vecinos. En casos indeterminados, la simetría de los copos de nieve (seis veces rotacional, más reflexión) sigue siendo aplicada por el código.

Las imágenes en azul claro se hicieron con un conjunto de reglas indeterminadas donde el único cambio que se hizo fue establecer la probabilidad de generación cuando hay un vecino a 0.5, por lo que los parámetros de generación fueron 0,0.5,0,0,0,0,0,0,0. Estas imágenes me parecen más como copos de nieve. Otro conjunto interesante de parámetros de generación es 0,0,5,0,0,0,1,0,0,1 (0,5 posibilidades de generación con un vecino; 0,1 posibilidades con 3 vecinos, certeza con 6 vecinos).

Usted puede publicar en los comentarios lo que son algunos conjuntos de reglas interesantes. La regla por defecto y su variante probabilística anterior son bastante imprimibles. Reglas donde todas las probabilidades de supervivencia son 1 resultarán en copos de nieve completamente conectados. Si algunas probabilidades de supervivencia son menores de 1, puede haber valores atípicos.

El Personalizador basado en OpenSCAD se generó exportando el código de OpenSCAD desde BlocksCAD, y moviendo las definiciones de variables a la parte superior del archivo para su compatibilidad con el Personalizador.

Si activa el sombreado de color (al tener diferentes configuraciones de color1 y color2), el sombreado de color pasa por el paso durante el cual se generó una celda. También puede activar el anillado periódico para obtener un efecto de color especial.

Fue difícil implementar un autómata celular en BlocksCAD ya que BlocksCAD no soporta arrays y, para mayor complicación, es un lenguaje funcional.

Para acelerar el código, el autómata celular sólo se implementa en un segmento de 1/12 de la placa, con el resto reconstruido por simetría.

El corazón del código es un módulo recursivo gigante evolutivo que (en la versión de radio 40) toma 421 argumentos. El primer argumento cuenta las iteraciones. Los 420 argumentos restantes almacenan cada uno una celda de datos. Si el recuento de iteración llega a 0, entonces evolucionar' llamadraw(i,j,v)para cada celda. Tiene que hacer esto por medio de una unión de 420 invocaciones, ya que no hay arreglos y por lo tanto no hay manera de iterar sobre los argumentos. La funcióndraw(i,j,v)dibuja el hex siv` no es cero, así como dibuja los hasta 11 otros hexes que están relacionados con él por las simetrías de los copos de nieve.

Luego, el módulo evolucionar se llama a sí mismo recursivamente con el conteo de iteración decrementado, y cada argumento de la celda evolucionó. La evolución de los argumentos de la celda se realiza sumando los recuentos vecinos de cada argumento para comprobar si la celda debería estar viva. Hay una llamada codificada a una función de evolución de `célula' para cada uno de los 420 argumentos.

También hay un módulo "go" que llama "evolucionar" con sus argumentos iniciales 421 (versión de radio 40): una cuenta de iteraciones, seguida de un 1 central, seguido de ceros. Finalmente, el código extruye linealmente la salida del módulo go para hacerlo 3D.

En este punto podrías pensar que estaba loco por arrastrar y soltar el código de evolución de cada una de las 420 celdas de evolucionar'. Bueno, no lo hice. Escribí un script python rápido y sucio (incluido comoblockscad.pyycell6.py: este último es el script principal) que puede generar un subconjunto de código xml BlocksCAD, y lo usé para generar automáticamente el módulo giganteevolucionarque llamacellpara cada célula, y el gran módulogo`.

El resto del código se introdujo manualmente en BlocksCAD: el módulo go, algún código de nivel superior, la función cell evolution, y el módulo draw.

Ensamblar todo el código en BlocksCAD fue un poco de trabajo. La mayor parte del código introducido manualmente se guardó en xml como copia de seguridad (incluido como "código de mano"). Luego importé el archivo xml generado por python a BlocksCAD. Luego agregué la envoltura de extrusión alrededor del módulo "go". (O al menos así es como lo hice cuando finalmente descubrí cómo hacerlo funcionar.) Luego hice algunas optimizaciones.

https://youtu.be/sJjrz4mL5aA

  • Formato de modelo 3D : STL

Palabras-clave

Creador

Licencia

CC BY

Página traducida por traducción automática. Ver la versión original.

Modelos 3D similares

Los más vendidos de la categoría Arte

Contenidos correspondientes


Añadir un comentario


¿Te gustaría apoyar Cults?

¿Te gustan Cults y quieres ayudarnos a continuar la aventura de forma independiente? Tenga en cuenta que somos un equipo pequeño de 3 personas, por lo que es muy sencillo apoyarnos para mantener la actividad y crear futuros desarrollos. Aquí hay 4 soluciones accesibles para todos:

  • PUBLICIDAD: Deshabilite su bloque de anuncios AdBlock y haga clic en nuestros banners.

  • AFILIACIÓN: Haga sus compras en línea haciendo clic en nuestros enlaces de afiliados aquí Amazon, Gearbest, Banggood, Aliexpress o Ebay.

  • DONACIÓN: Si lo desea, puede hacer una donación a través de PayPal aquí.

  • PALABRA DE BOCA: Invita a tus amigos a venir, descubre la plataforma y los magníficos archivos 3D compartidos por la comunidad!