Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int gridWidth = 100;
- int gridHeight = 100;
- float[][] prevState = new float[gridWidth][gridHeight];
- float[][] grid = new float[gridWidth][gridHeight];
- float maxHue = 100;
- void setup() {
- size(500, 500);
- colorMode(HSB, 100, 100, 100);
- noStroke();
- for (int i = 0; i < prevState.length; i++) {
- for (int j = 0; j <prevState[0].length; j++) {
- prevState[i][j] = 2 * PI * random(0, 1);
- }
- }
- }
- void draw() {
- int stepX = width / gridWidth;
- int stepY = height / gridHeight;
- float w = 0.10;
- float alpha = 0.4;
- float K = 0.01;
- for (int i = 0; i < gridWidth; i+= 1) {
- for (int j = 0; j < gridHeight; j+= 1) {
- float prevOmega = prevState[i][j];
- float accum = 0;
- for (int k = 0; k < 3; k++) {
- for (int p = 0; p < 3; p++) {
- int left = i + k - 1;
- int right = j + p - 1;
- if (left > 0 && right > 0 && left < gridWidth && right < gridHeight) {
- float mOmega = prevState[left][right];
- accum += sin(prevOmega - mOmega);
- }
- }
- }
- accum *= K;
- float deltaOmega = w + accum;
- float omega = prevOmega - alpha * deltaOmega;
- float hue = maxHue * (1.0 + sin(omega))/2.0;
- fill(color(hue, 100, 100));
- rect(i*stepX, j*stepY, stepX, stepY, 0);
- //ellipse(i*stepX, j*stepY, stepX, stepY);
- grid[i][j] = omega;
- }
- }
- float[][] buff = prevState;
- prevState = grid;
- grid = buff;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement