Newer
Older
Micah Elizabeth Scott
committed
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
80
81
82
83
OPC opc;
TriangleGrid triangle;
float dx, dy, dz;
void setup()
{
int zoom = 4;
size(20*zoom, 20*zoom);
// Connect to the local instance of fcserver. You can change this line to connect to another computer's fcserver
opc = new OPC(this, "127.0.0.1", 7890);
// Map our triangle grid to the center of the window
triangle = new TriangleGrid();
triangle.grid16();
triangle.mirror();
triangle.rotate(radians(60));
triangle.scale(height * 0.2);
triangle.translate(width * 0.5, height * 0.57);
triangle.leds(opc, 0);
// Make the status LED quiet
opc.setStatusLed(false);
colorMode(HSB, 100);
}
float noiseScale=0.02;
float fractalNoise(float x, float y, float z) {
float r = 0;
float amp = 1.0;
for (int octave = 0; octave < 4; octave++) {
r += noise(x, y, z) * amp;
amp /= 2;
x *= 2;
y *= 2;
z *= 2;
}
return r;
}
void draw() {
long now = millis();
float speed = 0.002;
float zspeed = 0.1;
float angle = sin(now * 0.001);
float z = now * 0.00008;
float hue = now * 0.01;
float scale = 0.005;
float saturation = 100 * constrain(pow(1.15 * noise(now * 0.000122), 2.5), 0, 1);
float spacing = noise(now * 0.000124) * 0.1;
dx += cos(angle) * speed;
dy += sin(angle) * speed;
dz += (noise(now * 0.000014) - 0.5) * zspeed;
float centerx = noise(now * 0.000125) * 1.25 * width;
float centery = noise(now * -0.000125) * 1.25 * height;
loadPixels();
for (int x=0; x < width; x++) {
for (int y=0; y < height; y++) {
float dist = sqrt(pow(x - centerx, 2) + pow(y - centery, 2));
float pulse = (sin(dz + dist * spacing) - 0.3) * 0.3;
float n = fractalNoise(dx + x*scale + pulse, dy + y*scale, z) - 0.75;
float m = fractalNoise(dx + x*scale, dy + y*scale, z + 10.0) - 0.75;
color c = color(
(hue + 40.0 * m) % 100.0,
saturation,
100 * constrain(pow(3.0 * n, 1.5), 0, 0.9)
);
pixels[x + width*y] = c;
}
}
updatePixels();
}