Skip to content

Language Settings

Graphing 2D Equations

Graphics the following equation: sin(n cos(r) + 5θ) where n is a function of horizontal mouse location. Original by Daniel Shiffman

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
function setup() {
  createCanvas(710, 400);
  pixelDensity(1);
}
function draw() {
  loadPixels();
  let n = (mouseX * 10.0) / width;
  const w = 16.0; // 2D space width
  const h = 16.0; // 2D space height
  const dx = w / width; // Increment x this amount per pixel
  const dy = h / height; // Increment y this amount per pixel
  let x = -w / 2; // Start x at -1 * width / 2
  let y;
  let r;
  let theta;
  let val;
  let bw; //variable to store grayscale
  let i;
  let j;
  let cols = width;
  let rows = height;
  for (i = 0; i < cols; i += 1) {
    y = -h / 2;
    for (j = 0; j < rows; j += 1) {
      r = sqrt(x * x + y * y); // Convert cartesian to polar
      theta = atan2(y, x); // Convert cartesian to polar
      // Compute 2D polar coordinate function
      val = sin(n * cos(r) + 5 * theta); // Results in a value between -1 and 1
      //var val = cos(r);                            // Another simple function
      //var val = sin(theta);                        // Another simple function
      bw = color(((val + 1) * 255) / 2);
      index = 4 * (i + j * width);
      pixels[index] = red(bw);
      pixels[index + 1] = green(bw);
      pixels[index + 2] = blue(bw);
      pixels[index + 3] = alpha(bw);
      y += dy;
    }
    x += dx;
  }
  updatePixels();
}
X

creative commons license