xxxxxxxxxx
191
var grid;
var next;
var fr;
var dA = 1;
var dB = 0.5;
var feed = 0.055;
var k = 0.062;
let writer;
let s;
let m;
let h;
let data = [];
function setup() {
createCanvas(200, 200);
fr = createP('');
pixelDensity(1);
grid = [];
next = [];
for (var x = 0; x < width; x++) {
grid[x] = [];
next[x] = [];
for (var y = 0; y < height; y++) {
grid[x][y] = {
a: 1,
b: 0
};
next[x][y] = {
a: 1,
b: 0
};
}
}
writer = createWriter('diffData.txt')
m = minute();
s = second();
h = hour();
data.push('start:' + h + ':' + m + ':' + s);
saveButton = createButton('save');
saveButton.mousePressed(saveFile);
resetButton = createButton('reset');
resetButton.mousePressed(resetFile);
// for (var i = 45; i < 55; i++) {
// for (var j = 45; j < 55; j++) {
// grid[i][j].b = 1;
// }
// }
saveDataButton = createButton('save data');
saveDataButton.mousePressed(saveData);
}
function mouseClicked(){
if (mouseX > 0 && mouseX < width && mouseY > 0 && mouseY < height){
s = second();
m = minute();
h = hour();
data.push(h + ':' + m + ':' + s);
}
}
function resetFile(){
s = second();
m = minute();
h = hour();
data.push('reset');
for (var i = 0; i < width; i++){
for (var j = 0; j < height; j++){
grid[i][j].b = 0;
}
}
}
function saveFile() {
s = second();
m = minute();
h = hour();
data.push('save');
save('agg.jpg');
}
function saveData(){
s = second();
m = minute();
h = hour();
data.push('end: ' + h + ':' + m + ':' + s);
for(let i = 0; i < data.length; i++){
writer.print(data[i]);
}
writer.close();
writer.clear();
}
function draw() {
background(51);
if (mouseIsPressed && mouseX > 0 && mouseX < width && mouseY > 0 && mouseY < height) {
for (var i = mouseX - 5; i < mouseX + 5; i++) {
for (var j = mouseY - 5; j < mouseY + 5; j++){
grid[i][j].b = 1;
}
}
}
for (var x = 1; x < width - 1; x++) {
for (var y = 1; y < height - 1; y++) {
var a = grid[x][y].a;
var b = grid[x][y].b;
next[x][y].a = a +
(dA * laplaceA(x, y)) -
(a * b * b) +
(feed * (1 - a));
next[x][y].b = b +
(dB * laplaceB(x, y)) +
(a * b * b) -
((k + feed) * b);
next[x][y].a = constrain(next[x][y].a, 0, 1);
next[x][y].b = constrain(next[x][y].b, 0, 1);
}
}
loadPixels();
for (var x = 0; x < width; x++) {
for (var y = 0; y < height; y++) {
var pix = (x + y * width) * 4;
var a = next[x][y].a;
var b = next[x][y].b;
var c = floor((a - b) * 255);
c = constrain(c, 0, 255);
pixels[pix + 0] = c;
pixels[pix + 1] = c;
pixels[pix + 2] = c;
pixels[pix + 3] = 255;
}
}
updatePixels();
swap();
fr.html(floor(frameRate()));
}
function laplaceA(x, y) {
var sumA = 0;
sumA += grid[x][y].a * -1;
sumA += grid[x - 1][y].a * 0.2;
sumA += grid[x + 1][y].a * 0.2;
sumA += grid[x][y + 1].a * 0.2;
sumA += grid[x][y - 1].a * 0.2;
sumA += grid[x - 1][y - 1].a * 0.05;
sumA += grid[x - 1][y + 1].a * 0.05;
sumA += grid[x + 1][y + 1].a * 0.05;
sumA += grid[x + 1][y - 1].a * 0.05;
return sumA;
}
function laplaceB(x, y) {
var sumB = 0;
sumB += grid[x][y].b * -1;
sumB += grid[x - 1][y].b * 0.2;
sumB += grid[x + 1][y].b * 0.2;
sumB += grid[x][y + 1].b * 0.2;
sumB += grid[x][y - 1].b * 0.2;
sumB += grid[x - 1][y - 1].b * 0.05;
sumB += grid[x - 1][y + 1].b * 0.05;
sumB += grid[x + 1][y + 1].b * 0.05;
sumB += grid[x + 1][y - 1].b * 0.05;
return sumB;
}
function swap() {
var temp = grid;
grid = next;
next = temp;
}