Jump to content
Sign in to follow this  
legomir

Cellurar Automata

Recommended Posts

Tak, więc postanowiłem nieco w ramach zabawy, a trochę edukacyjnie(zarówno dla siebie jak i dla innych) porobić trochę automaty komórkowe. Na pierwszy ogień idzie gra w życie na zasadach Conwaya chyba najbardziej znany automat komórkowy(kolejnym bardzo znanym jest automat reakcji-dyfuzji). Dobra, ale od początku co to automat komórkowy? Za wikipedia możemy powiedzieć(https://pl.wikipedia.org/wiki/Automat_kom%C3%B3rkowy):

 

Automat komórkowy – system składający się z pojedynczych komórek, znajdujących się obok siebie. Ich układ przypomina szachownicę lub planszę do gry. Każda z komórek może przyjąć jeden ze stanów, przy czym liczba stanów jest skończona, ale dowolnie duża. Stan komórki zmieniany jest synchronicznie zgodnie z regułami mówiącymi, w jaki sposób nowy stan komórki zależy od jej obecnego stanu i stanu jej sąsiadów

 

Co w gruncie rzeczy oznacza możesz zrobić sobie fajne obrazki używając kilku prostych zasad, a nawet to może się do czegoś przydać. Do czego oprócz rozrywki? Automaty komórkowe są używane np. przez biologów do modelowania modelowania różnych układów np. reakcja-dyfuzja była badana przez Alana Turinga, który o ile dobrze pamiętam wymyślił różniczkę na liczenie tego, podczas gdy w dzisiejszych czasach stosuje się w zasadzie zawsze postać automatu komórkowego. Dlaczego? Automaty komórkowe są właściwie idealne do liczenia przez komputer.

 

Przechodząc jednak do gry w życie. Jest to gra stworzona przez Conwaya za pomocą automatów komórkowych. Jedyna interwencja gracza polega na ustawieniu początkowych stanów komórek i obserwowaniu co się dzieje. Co może być całkiem fajną zabawą:

 

 

Teraz przechodząc do samego mojego wykonania. Będę posługiwał się Houdinim. Czemu? Z trzech powodów po pierwsze to jedyny soft(może podobnie prosto byłoby w XSI) gdzie można zrobić to tak prosto i naturalnie, po drugie to soft jakiego używam na codzień, po trzecie komuś to pomoże w nauce. Za chwilę dodam kolejny post z opisem tego co już zrobiłem.

Edited by legomir

Share this post


Link to post
Share on other sites

Do tej pory zrobiłem:

-wyszukiwanie sąsiadów w sąsiedztwie Moora

-boundry conditions

-kolorowanie stanów

 

To do:

-w tej chwili opóźnianie zmiany stanu jest oszukane należy zrobić to poprawnie

-chcę zrobić to bardziej przestrzennie

-ponieważ w tej chwili to wszystko jest mega łatwe pewnie dodam animacje przejścia ze stanu w stan

-jakiś rendering

 

Hasło: test

 

Vimeo zmieniło zasady i muszę mieć plus żeby dać prywatnego linka :(

 

Jeszcze taki mały screen jak wygląda to w H:

Yt4c5hC.png

 

Co tutaj się dzieje:

1.Podstawą wszystkiego jest grid

2.Domyślnym stanem jest martwość ;)

3.Grupowanie, posługuje się małą sztuczką najpierw zaznaczam wszystkie primitivy(w bardzo uproszczony sposób można powiedzieć, że Houdini rozumie przez to wszystkie facy, krzywe albo volumy), a potem zaznaczam odznaczam primitivy/facy, które zawierają boundry edges.

4.Tutaj najbardziej upierdliwa część. Gra w życie używa sąsiedztwa Moor'a(https://pl.wikipedia.org/wiki/S%C4%85siedztwo_Moore%E2%80%99a) ponieważ chciałem aby część która jest na krawędzi też uczestniczyła to musiałem się uporać z tym, że niektóre komórki mają dziwnych sąsiadów. Aby nie komplikować bardzo prostego kodu zmiany stanów postanowiłem brzydką część przerzucić gdzie indziej. Co zaowocowało tym, że iteruje się po tablicy za pomocą pętli foreach. Dzięki długość tablicy/ilość sąsiadów nie ma dla mnie znaczenia. Jeśli ktoś by chciał mogę wrzucić kod ale nie ma tu nic ciekawego ;)

5.Teraz maszyna stanów. W tym automacie są tylko dwa. Jeden to żywy. Drugi to martwy. Jeśli komórka jest martwa i ma trzech żywych sąsiadów to ożywa jeśli żywa a liczba sąsiadów jest mniejsza niż 2 lub 3 to umiera.

6.Koloruje facy za pomocą numerów stanów, dzięki czemu kolor jest dowolny.

 

Chyba jeszcze dziś wrzucę małą aktualizację. Czekam na pytani :) Btw. prawdziwy fan zacznie się przy animacji, bo inaczej to jest mega proste.

Edited by legomir

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

We are using cookies. Read about our Privacy Policy