CAMatrix, SI Projekt Matrix

background image

Uniwersytet Śląski w Katowicach
Wydział Informatyki i Nauki o Materiałach



Sztuczna Inteligencja

Automat komórkowy

Matrix



Opracowali:

Paulina Giereś

Ewelina Kania

Inżynieria biomedyczna rok III, OM1

 



background image

Automat komórkowy Matrix działa na podanych zasadach:

● Każda komórka może przyjąć wartości od 0 do 255, co oznacza od koloru czarnego

do największego nasycenia danego koloru (w naszym przypadku zieleń #00ff00)

● Populacja zaczyna się od 10 komórek w losowo wybranym miejscu w oknie.

● Dla każdej komórki bierze się pod uwagę komórki z jej ortogonalnego sąsiedztwa,

oznacza to, że pod uwagę bierzemy czterech sąsiadów, na rysunku zaznaczonych
zielonym kolorem.

rys. 1

● Jeśli suma wartości komórek na dole i na górze nie jest równa zero, wtedy stan

branej pod uwagę komórki zmienia się zgodnie z modulo (resztą z dzielenia) sumy
wartości komórek po prawej i lewej stronie przez wartości komórek na dole i na
górze.

rys. 2

rys. 3

132

78) mod (81

78)

1

(

+ 1

+ 1

= 5

(dla ułatwienia nie zmieniono wartości sąsiadów na rys. 3)

background image

● Jeśli suma komórek na dole oraz na górze wynosi zero, wtedy należy brać pod uwagę

jedynie sumę wartości komórek po lewej i prawej stronie i dodać ją do obecnego
stanu komórki.
Uwaga: najwyższa wartość 255! W przypadku, gdy suma wyniesie więcej, stan
zmienia się na 255.

rys. 4

rys.5

175

75)

6

86

(

+ 1

+ 3 = 3

Przypadek, w którym bierzemy najwyższą możliwą wartość, 255


● Automat posiada trzy tryby, które zmienia się za pomocą klawiszy 1,2 i 3. Różnią się

od siebie sposobem rozwoju.

● Kliknięcie LPM prowadzi do ponownej populacji w oknie












background image

Tryb 1





background image

Tryb 2





background image

Tryb 3




background image

KOD PROGRAMU


int W = 600; // szerokość okna (powinno być dzielne przez S)
int H = 400; // wysokość okna (powinno być dzielne przez S)
int S = 2; // rozmiar komórek w pikselach
int C = W / S; // ilość column w automacie
int R = H / S; // ilość wierszy w automacie
int mode=1; // która wersja jest wyświetlana na początku
int [][] curr; // obecne pokolenie
int [][] prev; // poprzednie pokolenie
color [] palette; // 256 kolorów

void setup() {
size(W,H);
frameRate(15); //

im więcej tym szybciej

background(0);
noStroke();
curr = new int[R][C];
prev = new int[R][C];
populate();
palette = new int[256];
for (int i=0; i<256; i++) {

int k = (int)(pow(i/256.0,2)*255.0); //

intensywność wybranego koloru,(pow(x,y)=x^y)

palette[i] = color(0,k,0); // kolor (R,G,B)

}
}

void populate() {
for (int r=0; r<R; r++) {

for (int c=0; c<C; c++) {

prev[r][c] = curr[r][c] = (int)random(10); // można zmieniać!

// (10) - mała populacja początkowa, w miarę szybko się rozwija

}

}
}


void update() {
for (int r=0; r<R; r++) {

background image

for (int c=0; c<C; c++) {

int state = curr[r][c];

int lr = prev[r][(c-1+C)%C] + prev[r][(c+1)%C]; // modulo %

int tb = prev[(r-1+R)%R][c] + prev[(r+1)%R][c];

int breed = 0;

switch(mode) { // tryby

case 1 : breed = (state+lr)&0xff; break;

// aktywny

case 2 : breed = ((state+lr))&0xf; break;

// najbardziej “matrixowy” efekt, usuwa najwyższe wartości bitów, wolniejszy rozwój

case 3 : breed = (state+100)&0xff; break;

// bardzo zaszumiony efekt

// itd

}

curr[r][c] = (tb==0) ? breed : (lr%tb)&0xff;
}

}
}

void render() {
for (int r=0,y=0; r<R; y+=S,r++) {

for (int c=0,x=0; c<C; x+=S,c++) {

fill(palette[curr[r][c]]);

rect(x,y,S,S); // kształt
}

}
}

void swap() {
int [][] temp = curr;
curr = prev;
prev = temp;
}

void ui() {
fill(255,42,0,120);
text("mode: " + mode, 5, H-5);

background image

}

void draw() {
update();
render();
ui();
swap();
}

void keyPressed() {
if ((key>='1') && (key<='3'))

mode = key - '0';

}

void mousePressed() {
populate();
}

 


Wyszukiwarka

Podobne podstrony:
[SI] projekt wizja
Metoda sił projekt belka
Metody efektywnego uczenia si i pisania prac projektowych
C3 - Hydranty ppoż, SP.370.SI.KJ.C3.P0001, Numer projektu:
Projekt-PrzekladniaZebata (2Sg 280S12 Trójfazowe si...)
Projekt-PrzekladniaZebata (2Sg 250M12 Trójfazowe si...)
Projekt metale si
Projekt 4 przyklad 1' Model SI RPN'
PROJEKT Z SILNIKÓW I, Politechnika Lubelska, Studia, Studia, organizacja produkcji, laborki-moje, od
Projektowanie SI - podstawowe zagadnienia (1), Informatyka, SEMESTR IV, Projektowanie
Projektowanie SI - podstawowe zagadnienia (2), dokumenty, Sztuczna inteligencja
SCIĄGA, Dokumentacja wst˙pnego projektu rozmieszczenia dzia˙ek sk˙ada si˙ z cz˙˙ci graficznej i opis
Narzędzia i metody wspomagające projektowanie SI
Metody efektywnego uczenia si i pisania prac projektowych
PROJEKT SI 031 dr No

więcej podobnych podstron