1/**
2 * RGB Cube.
3 *
4 * The three primary colors of the additive color model are red, green, and blue.
5 * This RGB color cube displays smooth transitions between these colors.
6 */
7
8float xmag, ymag = 0;
9float newXmag, newYmag = 0;
10
11void setup()
12{
13  size(640, 360, P3D);
14  noStroke();
15  colorMode(RGB, 1);
16}
17
18void draw()
19{
20  background(0.5);
21
22  pushMatrix();
23
24  translate(width/2, height/2, -30);
25
26  newXmag = mouseX/float(width) * TWO_PI;
27  newYmag = mouseY/float(height) * TWO_PI;
28
29  float diff = xmag-newXmag;
30  if (abs(diff) >  0.01) { xmag -= diff/4.0; }
31
32  diff = ymag-newYmag;
33  if (abs(diff) >  0.01) { ymag -= diff/4.0; }
34
35  rotateX(-ymag);
36  rotateY(-xmag);
37
38  scale(90);
39  beginShape(QUADS);
40
41  fill(0, 1, 1); vertex(-1,  1,  1);
42  fill(1, 1, 1); vertex( 1,  1,  1);
43  fill(1, 0, 1); vertex( 1, -1,  1);
44  fill(0, 0, 1); vertex(-1, -1,  1);
45
46  fill(1, 1, 1); vertex( 1,  1,  1);
47  fill(1, 1, 0); vertex( 1,  1, -1);
48  fill(1, 0, 0); vertex( 1, -1, -1);
49  fill(1, 0, 1); vertex( 1, -1,  1);
50
51  fill(1, 1, 0); vertex( 1,  1, -1);
52  fill(0, 1, 0); vertex(-1,  1, -1);
53  fill(0, 0, 0); vertex(-1, -1, -1);
54  fill(1, 0, 0); vertex( 1, -1, -1);
55
56  fill(0, 1, 0); vertex(-1,  1, -1);
57  fill(0, 1, 1); vertex(-1,  1,  1);
58  fill(0, 0, 1); vertex(-1, -1,  1);
59  fill(0, 0, 0); vertex(-1, -1, -1);
60
61  fill(0, 1, 0); vertex(-1,  1, -1);
62  fill(1, 1, 0); vertex( 1,  1, -1);
63  fill(1, 1, 1); vertex( 1,  1,  1);
64  fill(0, 1, 1); vertex(-1,  1,  1);
65
66  fill(0, 0, 0); vertex(-1, -1, -1);
67  fill(1, 0, 0); vertex( 1, -1, -1);
68  fill(1, 0, 1); vertex( 1, -1,  1);
69  fill(0, 0, 1); vertex(-1, -1,  1);
70
71  endShape();
72
73  popMatrix();
74}
75