topical media & game development

talk show tell print

graphic-processing-site-examples-Libraries-OpenGL-SpaceJunk-Cube.pde / pde



  
  class Cube {
  
    // Properties
    int w, h, d;
    int shiftX, shiftY, shiftZ;
  
    // Constructor
    Cube(int w, int h, int d, int shiftX, int shiftY, int shiftZ){
      this.w = w;
      this.h = h;
      this.d = d;
      this.shiftX = shiftX;
      this.shiftY = shiftY;
      this.shiftZ = shiftZ;
    }
  
    // Main cube drawing method, which looks 
    // more confusing than it really is. It's 
    // just a bunch of rectangles drawn for 
    // each cube face
    void drawCube(){
      beginShape(QUADS);
      // Front face
      vertex(-w/2 + shiftX, -h/2 + shiftY, -d/2 + shiftZ); 
      vertex(w + shiftX, -h/2 + shiftY, -d/2 + shiftZ); 
      vertex(w + shiftX, h + shiftY, -d/2 + shiftZ); 
      vertex(-w/2 + shiftX, h + shiftY, -d/2 + shiftZ); 
  
      // Back face
      vertex(-w/2 + shiftX, -h/2 + shiftY, d + shiftZ); 
      vertex(w + shiftX, -h/2 + shiftY, d + shiftZ); 
      vertex(w + shiftX, h + shiftY, d + shiftZ); 
      vertex(-w/2 + shiftX, h + shiftY, d + shiftZ);
  
      // Left face
      vertex(-w/2 + shiftX, -h/2 + shiftY, -d/2 + shiftZ); 
      vertex(-w/2 + shiftX, -h/2 + shiftY, d + shiftZ); 
      vertex(-w/2 + shiftX, h + shiftY, d + shiftZ); 
      vertex(-w/2 + shiftX, h + shiftY, -d/2 + shiftZ); 
  
      // Right face
      vertex(w + shiftX, -h/2 + shiftY, -d/2 + shiftZ); 
      vertex(w + shiftX, -h/2 + shiftY, d + shiftZ); 
      vertex(w + shiftX, h + shiftY, d + shiftZ); 
      vertex(w + shiftX, h + shiftY, -d/2 + shiftZ); 
  
      // Top face
      vertex(-w/2 + shiftX, -h/2 + shiftY, -d/2 + shiftZ); 
      vertex(w + shiftX, -h/2 + shiftY, -d/2 + shiftZ); 
      vertex(w + shiftX, -h/2 + shiftY, d + shiftZ); 
      vertex(-w/2 + shiftX, -h/2 + shiftY, d + shiftZ); 
  
      // Bottom face
      vertex(-w/2 + shiftX, h + shiftY, -d/2 + shiftZ); 
      vertex(w + shiftX, h + shiftY, -d/2 + shiftZ); 
      vertex(w + shiftX, h + shiftY, d + shiftZ); 
      vertex(-w/2 + shiftX, h + shiftY, d + shiftZ); 
  
      endShape(); 
  
      // Add some rotation to each box for pizazz.
      rotateY(radians(1));
      rotateX(radians(1));
      rotateZ(radians(1));
    }
  }
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.