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

Designing dynamic hospitals for pandemics

Student Works; Design Studio 2020W.

Wolfgang E. Lorenz and Gabriel Wurzer. The design studio "designing a dynamic hospital for pandemics" took place in the winter term 2020/2021 at TU Wien, during the 2nd wave of the SARS-CoV-2 pandemic. ...

Fractal and Fractional:
Multilayered Complexity Analysis in Architectural Design

Multilayered Complexity Analysis in Architectural Design: Two Measurement Methods Evaluating Self-Similarity and Complexity
Journal Paper: Fractal and Fractional, 5 (2021), 4; S. 1 - 25.
DOI 10.3390/fractalfract5040244

eCAADe 2021:
DAttE

DAtTE - Detection of Attic Extensions: Workflow to analyze the potentials of roofs in an urban environment
Talk and Proceeding: eCAADe 2021 - Towards a new, configurable architecture (Novi Sad, Serbia, 2021 | hybrid conference)
presentation (video)