Usually, I try and get whatever I am working on actually working before writing a blog post and presenting it. However, working with the L-System’s last time has shown me that on the way to getting the proper functionality, a lot of other cool things start to happen.
Because of that, this post will detail bugs with cellular automata that came up on the way to getting it working. As well as outline next weeks to-do list.
With the edge cases failing to work properly giving it this square shape, and one “else” statement acting as a sort of catch-all, the cellular automata acts like a simple on-off switch, changing between two similar images.
These iterations of cellular automata show what happens when the rules aren’t correct. Similarly, the cells don’t “forget” previously given seeds. You really can’t know for sure what these iterations are and aren’t taking into consideration.
This appears to be somewhat following the “123/45” rule where black squares stay alive if they have less than 3 neighbors, and white squares come alive with 4 or 5 neighbors. Further testing has shown that when put in a black clump lots of cells die off, and when one is left alone it will survive. Indicating this has semi-proper functionality.
Eventually though with some adjusting, John Conway’s game of life was properly implemented, with working edge cases and the ability to skip forward generations.
With cellular automata apparently working for the 123/45 rule, we begin to look into allowing this to be generalized for different rules. In a meeting with Taylor today I mentioned using two different hashmaps to represent rules for white and black cells. These can then be toggled on/off in the GUI. Although implementation for this appears to have some bugs still, I look forward to working through them and further generalizing the rules of the game of life!
Obviously cellular automata still has a way to go.
Next week, I will begin developing edge detection, and use the results of that to properly develop my hypothesis. As well as continue work on perfecting and generalizing cellular automata.