topical media & game development

talk show tell print

graphic-processing-site-examples-3D-Form-BrickTower-BrickTower.pde / pde



  
Brick Tower by Ira Greenberg. 3D castle tower constructed out of individual bricks. Uses the PVector and Cube classes.

  
  
  float bricksPerLayer = 16.0;
  float brickLayers = 18.0;
  Cube brick;
  float brickWidth = 60, brickHeight = 25, brickDepth = 25;
  float radius = 175.0;
  float angle = 0;
  
  void setup(){
    size(640, 360, P3D);
    brick = new Cube(brickWidth, brickHeight, brickDepth);
  }
  
  void draw(){
    background(0);
    float tempX = 0, tempY = 0, tempZ = 0;
    fill(182, 62, 29);
    noStroke();
    // Add basic light setup
    lights();
    translate(width/2, height*1.2, -380);
    // Tip tower to see inside
    rotateX(radians(-45));
    // Slowly rotate tower
    rotateY(frameCount * PI/600);
    for (int i = 0; i < brickLayers; i++){
      // Increment rows
      tempY-=brickHeight;
      // Alternate brick seams
      angle = 360.0 / bricksPerLayer * i/2;
      for (int j = 0; j < bricksPerLayer; j++){
        tempZ = cos(radians(angle))*radius;
        tempX = sin(radians(angle))*radius;
        pushMatrix();
        translate(tempX, tempY, tempZ);
        rotateY(radians(angle));
        // Add crenelation
        if (i==brickLayers-1){
          if (j%2 == 0){
            brick.create();
          }
        }
        // Create main tower
        else {
          brick.create();
        }
        popMatrix();
        angle += 360.0/bricksPerLayer;
      }
    }
  }
  
  


(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.