blob: 5226c3579891c49ac75d3ce8038bb797798bd1a6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
var params;
function mod(a, b)
{
var c = a % b;
while (a < 0)
{
c += b;
}
return c;
}
function sigmoid(z)
{
return 1 / (1 + Math.exp(-z))
}
function drawCA()
{
try
{
params = $.parseJSON("[" + $("#params").val() + "]");
var width = parseInt($("#width").val());
var time = parseInt($("#time").val());
}
catch(e)
{
$("#error").text("Error - Invalid parameters: " + $("#params").val() + ".");
return;
}
createCanvas(width, time);
var C = Math.floor(params.length / 2);
var values = [[]];
for (var i = 0; i < width; i++)
{
values[0][i] = 1;
}
for (var t = 1; t < time; t++)
{
values.push([]);
for (var i = 0; i < width; i++)
{
var total = 0;
for (var c = -C; c <= C; c++)
{
total += params[c+C] * values[t-1][i+c];
}
values[t].push(Math.random() < sigmoid(total) ? 1 : 0)
}
}
for (var t = 0; t < time; t++)
{
for (var i = 0; i < width; i++)
{
stroke(values[t][i] === 1 ? 0 : 255);
point(i, t);
}
}
}
function setup()
{
}
$(function()
{
$("#params").keydown(function (e)
{
if (e.which == 13)
{
drawCA();
}
});
$("#display").click(function()
{
drawCA();
});
});
|