Visual representation of adjacencies

eCAADe SIGraDi 2019 - Architecture in the Age of the 4th Industrial Revolution. (paper & talk)
W Lorenz, G. Wurzer. This paper is based on the assumption that a key challenge of good design is spatial organisation as a result of functional requirements. The authors present a new NetLogo application that assists designers to understand the proposed functional relationships (of spaces) by visualizing them graphically. ...

kleines Entwerfen customized bricks

digitales Entwerfen
G. Wurzer, W.E. Lorenz, S. Swoboda. Nach positiver Absolvierung der Lehrveranstaltung sind Studierende in der Lage algorithmisch zu Denken. Durch das Präzisieren der Problemstellung sind die Studierenden in der Lage den sinnvollen Einsatz von Algorithmen im Planungsprozess gedanklich zu erfassen. ...

Bridgemagazine Webpage

Webdesign für das bridgmagazin – Medieninhaber (Herausgeber) und Verleger: Österreichischer Bridgesportverband (ÖBV) | Audio Video Werbe-GmbH.

Stegreifentwerfen Hot Wood follow up

follow up "Würschtlstand"
W.E. Lorenz, G. Wurzer, S. Swoboda. Nach positiver Absolvierung der Lehrveranstaltung sind Studierende in der Lage algorithmisch zu Denken. Konkret erlangen sie die Fähigkeit jene Teile des Entwurfsprozesses zu erkennen, die ausprogrammiert zu schnelleren und allenfalls besseren Lösungen führen. Dabei greifen die Studierenden auf die Ergebnisse des kleinen Entwerfens "Hot Wood" aus dem Sommersemester 2019 zurück. ...

 

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