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

 

Jenga

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

  • n-rows by m-levels
     

code

///////////////////////////////////
// JENGA ///////////////////////
  /* add levels */
  var moveX = boxWidth + boxGap;
  var moveY = boxHeight + boxGap;
  /* draw copies in a row */
  for (var j = 0; j < numFloors; j++) {
    for (var i = 0; i < numRows; i++) {
      /* modulor => every second level */
      var modFloor = j % 2;
      if (modFloor == 0) {
        cube.position.x = ( - ((boxWidth + boxGap) * ( numRows - 1 ) / 2 ));
        cube.position.z = 0
      } else {
        cube.position.x = 0;
        cube.position.z = ( + ((boxWidth + boxGap) * ( numRows - 1 ) / 2 ));
      }
      var cubeSec = cube.clone();
      /* rotation of every second level */
      if (modFloor != 0) {
        var rotateBox = 90;
        cubeSec.rotation.y = ( rotateBox / 180 ) * Math.PI;
      }
      cubeSec.translateX( i * moveX )
      cubeSec.translateY( j * moveY )
      scene.add( cubeSec );
    }
  }