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

Journal Paper: A Cell-Based Method to Support Hospital Refurbishment

in  Applied Mechanics and Materials (Volume 887)

G. Wurzer, U. Coraglia, U. Pont, C. Weber, W Lorenz, A. Mahdavi

Hospital refurbishments often take place in parallel to regular operation, resulting in a scheduling problem: Construction activities must located such as they do not clash with daily work activities and vice versa. ...

Handbuch für Gildefunktionäre: Leitfaden der Pfadfinder-Gilde Österreichs

Überarbeitet von Wolfgang E. Lorenz, Ferry Partsch, Werner Weilguny. Das Handbuch dient als Nachschlagewerk und bietet eine umfangreiche Information zu allen relevanten Aspekten einer einzelnen Pfadfinder-Gilde. ...

Options for obtaining a 'Gründerzeit' flat – A wet dream explored by means of a Cellular Automata model

Talk and Proceeding: eCAADe 2018 - Computing for a better tomorrow - Proceedings of the 36th eCAADe Conference (Lodz, Poland, 2018). (paper & talk)

G. Wurzer, W Lorenz. This work explores the dichotomy between old areas offering high-quality living in a low-density neighborhood (typically near the city center) and newly-developed areas with high-density and lesser quality in the suburbs. ...

Vortrag

Architekt Robert Kramreiter – die Pfarrkirche Maria Lourdes: Anlässlich der 60 Jahrfeier des Weihetermines der Pfarrkirche Maria Lourdes in Wien Meidling werden vor allem die Einflüsse verschiedener Personengruppen im Zuge der Entwurfsplanung betrachtet.

Studie 3D Visualisierung

Studie/Visualisierung zur Planänderung des Flächenwidmungs- und Bebauungsplanes an Hand eines konkreten Fallbeispieles.

zur 3D-Studie

 

"Sun Shots"

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

  • a source creates point
  • the point move away from source
  • intersections with ground or buildings are highlighted

code

///////////////////////////////////
// ADD BUILDINGS ////////////

  /* construct buildings */
  var buildings = new THREE.Object3D();
  /* building1 */
  var mGeometry = new THREE.BoxGeometry( bWidth, bHeight, bDepth );
  var mMaterial = new THREE.MeshLambertMaterial( { color: 0xffff00 } );
  var building1 = new THREE.Mesh( mGeometry, mMaterial );
  /* edges */
  var mEdges = new THREE.EdgesGeometry( mGeometry );
  var mLine = new THREE.LineSegments( mEdges, new THREE.LineBasicMaterial( { color: 0x0000ff } ) );
  building1.add ( mLine );
  /* change position */
  building1.position.x = - bWidth * 2 ;
  building1.position.y = bHeight / 2 ;
  building1.position.z = bDepth * 3 ;
  buildings.add ( building1 );

///////////////////////////////////
// SHADOWS //////////////////

  /* 1. tell the renderer that you want shadows */
  renderer.shadowMap.enabled = true;
  renderer.shadowMap.type = THREE.PCFSoftShadowMap;
  renderer.shadowMapSoft = true;
  for (var i = 0; i < buildings.children.length; i++) {
    /* 2. enable objects to cast shadows */
    buildings.children[i].castShadow = true;
    /* 3. enable objects to receive shadows */
    buildings.children[i].receiveShadow = true;
  }
  /* 3. enable objects to receive shadows */
  ground.receiveShadow = true;
  /* 4. enable a light source to cast shadows (directional or spotlight only) */
  light1 = new THREE.PointLight( 0xff0000, 1, 100 );
  light1.position.set( sunSphere.position.x, sunSphere.position.y, sunSphere.position.z );
  light1.castShadow = true;
  scene.add( light1 );

///////////////////////////////////// INTERSECTIONS ///////////

  var numPts = sunPoints.children.length;
  /* move */
  for (var i = 0; i < numPts; i++) {
      sunPoints.children[i].translateX ( sunPoints.children[i].userData.direction.x * step )
      sunPoints.children[i].translateY ( sunPoints.children[i].userData.direction.y * step )
      sunPoints.children[i].translateZ ( sunPoints.children[i].userData.direction.z * step )

      if (( getDistance( sunPoints.children[i], sunSphere ) > maxradius ) || ( sunPoints.children[i].position.y > sunSphere.position.y ) || ( sunPoints.children[i].position.y < (-2 * step) )) {
      sunPoints.children[i].userData.delete = true;
    } else {
      var bounding_sp = new THREE.Box3().setFromObject(sunPoints.children[i]);
      var ground_bounding = new THREE.Box3().setFromObject(ground);
        var intersectGround = ground_bounding.intersectsBox(bounding_sp);
      /* intersection of "sun points" with ground */
        if ( intersectGround == true ){
          sunPoints.children[i].userData.intersects = true;
        } else {
           /* intersection of "sun points" with buildings */
          for (var j = 0; j < buildings.children.length; j++) {
          var building_bounding = new THREE.Box3().setFromObject(buildings.children[j]);
          var intersectBuilding = building_bounding.intersectsBox(bounding_sp);
              if ( intersectBuilding == true ){
                  sunPoints.children[i].userData.intersects = true;
              } else {
            sunPoints.children[i].userData.delete = false;
          }
          }
        }
      }
  }