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