Hot Wood

algorithmic design of a "Würschtlstand"
W.E. Lorenz, G. Wurzer, S. Swoboda. Ziel dieses Entwerfens ist es, Studierenden das algorithmische Denken näherzubringen und die Fähigkeit zu geben nach dem Präzisieren der Problemstellung den sinnvollen Einsatz von Algorithmen im Planungsprozess gedanklich zu erfassen. ...

Programming for Architects V2019

Anhand von Planungsaufgaben wird ein Grundwissen über die Programmierung vermittelt. Um die Einsatzmöglichkeiten eines selbstgeschriebenen Scripts in Architekturwerkzeugen aufzuzeigen, erfolgt im Speziellen das Erlernen der Syntax von Python und dessen Implementierung in Rhinoceros(R).
Neue Lehrunterlagen

Workshop "Tetris on a Bridge"

Workshop "Tetris on a bridge: Cellular Automata & Agent Based Design" G. Wurzer, W.E. Lorenz
Sapienza Università di Roma and Vienna University of Technology
Algorithms and programming are getting more and more important in the field of architecture and planning. ...

bricks are landing

algorithmic design of bricks pavilion (book) W.E. Lorenz, G. Wurzer (Hrg.). Mit einem Vorwort von Franz Kolnerberger (Geschäftsführer Vertrieb Wienerberger Österreich GmbH).
ISBN: 978-3-9504464-1-8
Im Zuge des kleinen Entwerfens “bricks are landing” (WS 2017) wurde die algorithmische Formfindung und/oder Optimierung an Hand eines freistehenden Pavillons untersucht. Übergeordnetes Ziel des Entwerfens war es das Verständnis und den Einsatz des algorithmischen Denkens in der Architekturpraxis zu fördern. ...

 

Golden Rectangle

This project uses three.js. Make your choice and press reset. Or press play button and change settings.

code

///////////////////////////////////
// GOLDEN RATIO ///////////////////
/* global variable Golden Ratio */

function goldenRatio(b, maxIterations) {
  var x = 0;
  var y = 0;
  var z = 0;
  var a = 1.0;
  var goldenRatio = 1.6180339887;
  var c = b;
  var r = 1.0;
  var fact = program.get('position');

  var i = 1;

  while (i <= maxIterations){
    r = mod (i, 4); //(i % 4);
    if (i == 1) {
      x = x + b / 2;
      y = y + b / 2;
      z = z + b / 2;
    } else if (i > 1) {
      if (r == 1) { // 0.25
        x = x - ((c - b) / 2);
        y = y + ((c - b) / 2) * fact;
        z = z - ((c + b) / 2);
      } else if (r == 2) { // 0.5
        x = x + ((c + b) / 2); // red
        y = y + ((c - b) / 2) * fact; // green
        z = z - ((c - b) / 2); // blue
      } else if (r == 3) { // 0.75
        x = x + ((c - b) / 2);
        y = y + ((c - b) / 2) * fact;
        z = z + ((c + b) / 2);
      } else if (r == 0) { // 0
        x = x - ((c + b) / 2);
        y = y + ((c - b) / 2) * fact;
        z = z + ((c - b) / 2);
      };
    };
    a = b / goldenRatio;

    //if (i == maxIteration) {
    drawCube (b, x, y, z);
    //}

    c = b;
    b = a;
    i = i + 1;
  }
}

function drawCube(b, x, y, z) {
  /* construct object */
  var object = new THREE.Object3D();
  /* cube */
  var mGeometry = new THREE.BoxGeometry( b, b, b );
  var mMaterial = new THREE.MeshLambertMaterial( { color: 0xffff00 } );
  var cube = new THREE.Mesh( mGeometry, mMaterial );
  cube.position.set(x - 2, y, z + 1);
  /* casting shadows */
  cube.castShadow = true;
  object.add ( cube )
  scene.add ( object );
}