Japan Exkursion 2016

Japan Exkursion 22.03.-10.04.2016 (book) A. Faller, W.E. Lorenz (Hrg.). Mit Beiträgen der Teilnehmer der Exkursion nach "japan" (2016).
ISBN: 978-3-9504464-0-1

Das Buch beschreibt in einzelnen Kapiteln die vom Institut Architektur-wissenschaften, Digitale Architektur und Raumplanung, organisierte Exkursion nach Japan aus dem Jahr 2016. ...

bricks are landing

algorithmic design of bricks pavilion. (kleines Entwerfen)

W Lorenz, S. Swoboda, G. Wurzer. In Fortsetzung des kleinen Entwerfens "flying bricks" (WS 2014), bei dem der Einsatz von Sichtziegel im digitalen Fassadenentwurf im Zentrum stand, soll nun die algorithmische Formfindung und/oder Optimierung an Hand eines freistehenden Pavillons untersucht werden. ...

Fractal Aesthetics in Architecture

Journal paper, in Applied Mathematics & Information Sciences. (article)

Wolfgang E. Lorenz, Jan Andres und Georg Franck. This paper deals with fractal aesthetics and proposes a new fractal analysis method for the perceptual study of architecture. The authors believe in the universality of formulas and aim to complement the architectural description in terms of proportion. ...

 

Sunbeams

This project uses three.js. Make your choice and press reset.

  • intersections between sunbeams and ground

code

///////////////////////////////////
// ADD BUILDING /////////////
  /* construct building */
  var building = new THREE.Object3D();
  for ( var i = 0; i < xSize; i++ ) {
    for ( var j = 0; j < ySize; j++ ) {
      for ( var k = 0; k < zSize; k++ ) {
        /* cube */
        var mGeometry = new THREE.BoxGeometry( boxSize, boxSize, boxSize );
        var mMaterial = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
        var cube = new THREE.Mesh( mGeometry, mMaterial );
        /* edges */
        var mEdges = new THREE.EdgesGeometry( mGeometry );
        var mLine = new THREE.LineSegments( mEdges, new THREE.LineBasicMaterial( { color: 0x0000ff } ) );
        cube.add ( mLine );
        //cube.userData = "isBuilding";
        /* change position */
        cube.position.x = ( i * boxSize ) - ((( xSize - 1 ) / 2 ) * boxSize );
        cube.position.z = ( j * boxSize ) - ((( ySize - 1 ) / 2 ) * boxSize );
        cube.position.y = ( k * boxSize ) + ( boxSize / 2 );
        building.add ( cube );
      }
    }
  }
  scene.add ( building );

///////////////////////////////////
// CALCULATE INTERSECTION
  /* midpoint of sun */
  var Sx = sphere.position.x
  var Sy = sphere.position.y
  var Sz = sphere.position.z
  /* the normal of the plane */
  var Ex = pNormal.x
  var Ey = pNormal.y
  var Ez = pNormal.z
  for (var i = 0; i < building.children.length; i++) {
    /* midpoint of cubes */
    var Mx = building.children[i].position.x
    var My = building.children[i].position.y
    var Mz = building.children[i].position.z
    /* line: Sx + (Mx -Sx) * t; Sy + (My -Sy) * t; Sz + (Mz -Sz) * t;
       plane: normal and pt (0,0,0) */
    var t = ( - Ex * Sx - Ey * Sy - Ez * Sz ) / (Ex * Mx - Ex * Sx + Ey * My - Ey * Sy + Ez * Mz - Ez * Sz )
    var ptX = Sx + ( Mx - Sx ) * t
    var ptY = Sy + ( My - Sy ) * t
    var ptZ = Sz + ( Mz - Sz ) * t
    /* intersection point as sphere */
    var iGeometry = new THREE.SphereGeometry( boxSize, 16, 16 );
    var iMaterial = new THREE.MeshBasicMaterial( {color: 0x0fff00} );
    var intersPt = new THREE.Mesh( iGeometry, iMaterial );
    /* change position */
    intersPt.position.x = ptX;
    intersPt.position.y = ptY;
    intersPt.position.z = ptZ;
    scene.add( intersPt );

    /* show sunlines */
    var midPointSphere = sphere.position
    var midPointMesh = intersPt.position
    var dirGeometry = new THREE.Geometry();
    dirGeometry.vertices.push( midPointSphere, midPointMesh );
    var dirMaterial = new THREE.LineBasicMaterial({ color: 0x0f00ff });
    var dirLine  = new THREE.Line( dirGeometry, dirMaterial );
    scene.add( dirLine );
    if (program.get('showSunLines') == true) {
      dirLine.visible = true
    } else {
      dirLine.visible = false
    }
  }