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

 

Cross Fractal

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

code

///////////////////////////////////
// CROSS FRACTAL //////////////////
/* recursive */

function cross(posI, posJ, posK, boxSize, iteration, maxIterations) {
  /* construction of menger sponge */
  for (var i = 1; i <= 3; i++) {
    for (var j = 1; j <= 3; j++) {
      for (var k = 1; k <= 3; k++) {
        if ( ( i == 2 && j == 1 && k == 2 ) ||
             ( i == 1 && j == 2 && k == 2 ) ||
             ( i == 2 && j == 2 && k == 2 ) ||
             ( i == 3 && j == 2 && k == 2 ) ||
             ( i == 2 && j == 2 && k == 1 ) ||
             ( i == 2 && j == 2 && k == 3 ) ||
             ( i == 2 && j == 3 && k == 2 ) ) {
          if (iteration < maxIterations) {
            cross((posI + i * boxSize), (posJ + j * boxSize), (posK + k * boxSize),
                     (boxSize / 3), (iteration + 1), maxIterations);
          } else if (iteration = maxIterations) {
            drawCube(i, j, k, posI, posJ, posK, boxSize, iteration, maxIterations);
          }
        }
      }
    }
  }
}
function drawCube(i, j, k, posI, posJ, posK, boxSize) {
  /* construct object */
  var object = new THREE.Object3D();
  /* cube */
  var mGeometry = new THREE.BoxGeometry( boxSize, boxSize, boxSize );
  var mMaterial = new THREE.MeshLambertMaterial( { color: 0xffff00 } );
  var cube = new THREE.Mesh( mGeometry, mMaterial );
  cube.position.set(posI + ((i + 1) * boxSize) - 3, posJ + ((j + 1) * boxSize) - 1,
    posK + ((k + 1) * boxSize));
  /* casting shadows */
  cube.castShadow = true;
  object.add ( cube )
  scene.add ( object );
}