RSS Amplifier

Blog

Home on AndrewMarsh.com

Recent content in Home on AndrewMarsh.com

/RSS feed ↗136 posts

Latest posts

Shape Script

Figure 1 : A screenshot of the new ShapeScript app running in a web browser. Launch app in new tab... Overview This app is very similar to OpenJSCad and ImplicitCAD , but uses the more powerful OpenCascade geometry kernel for many of its operations. Its development was heavily influenced by the work of Johnathon Selstad (zalo) and his Cascade Studio project on GitHub, but this one uses my own API…

Polyhedra - 2.0

Figure 1 : A screenshot of the new Polyhedra app running in a web browser. Launch app in new tab... Overview This app is the latest iteration of my previous polyhedra generator app. I have spent the last few years head-down developing a new web framework to support my ongoing BIM research work, and part of that has been some new shape generation tools. Shape manipulation is at the core of almost…

Revitalising My Website

Introduction At first glance, this new website may not look all that different from the previous one, but a lot has happened in the web development world since I moved away from Drupal back in 2016. Updating this site was therefore a great opportunity to do a dry run for my new framework website(s), so I really wanted to completely rewrite everything for the very latest versions of Bootstrap ,…

PD Class

PD : object .CAD .Path new PD.CAD.Path([point]) .asWire([reverse]) ⇒ oc.TopoDS_Wire .asFace([reverse]) ⇒ oc.TopoDS_Face .moveTo(point) ⇒ Path .lineTo(point) ⇒ Path .arcTo(through, point) ⇒ Path .bezierTo(controlPoints) ⇒ Path .bsplineTo(controlPoints) ⇒ Path .fillet(radius) ⇒ Path .addWire(wire) ⇒ Path .addCircle(center, radius, [reversed]) ⇒ Path .end([close], [reverse]) ⇒ Path .close([reverse])…

Site Analysis Metrics

Introduction When analysing a potential site for a new building, there are a range of metrics that can be used to quantify the amenity and resources available, and therefore the potential performance of a building if it were designed to take full advantage of them. As sites can be quite large and typically surrounded by obstructions such as other buildings, engineering works and vegetation, there…

Two New Christmas Apps

Introduction Christmas school holidays can be pretty tough for getting long enough stretches of time to make any meaningful progress on my core tools. However, I can usually snatch a few hours here and there to work on some smaller and less involved projects, so this Christmas I decided to work on a couple of apps that I have been thinking about for ages. Tree Generator App Launch app in new…

Polyhedra Generator

Figure 1 : A screenshot of the Polyhedra Generator app running in a web browser. Launch app in new tab... Overview This app generates a range of common polyhedra and lets you apply mathematical operations on them to create some interesting sculptural and architectural forms. I have included the standard operators used in Conway polyhedron notation – borrowing heavily from Anselm Levskaya’s…

Tree Generator

Figure 1 : A screenshot of the 3D Tree Generator app running in a web browser. Launch app in new tab... Overview The aim of this app is to generate reasonably configurable low-polygon parametric / procedural trees for use with BIM and building performance analysis models. To be used effectively in analysis, tree geometry needs to be as simple and light-weight as possible, but still sufficiently…

Site Designer

Figure 1 : A screenshot of the Site-Designer app running inside a web browser. Launch app in new tab... The aim of this app is to extend my shading, solar analysis and view calculations out to site level whilst still offering an intuitive and interactive modelling environment for site geometry. It’s key feature is the ability to interactively drag the position of a shading mask around the…

Dynamic Daylighting

Figure 1 : A screenshot of the Dynamic Daylighting app running in a web browser. Launch app in new tab... The aim of this app is to dynamically model the relationship between the spatial distribution of daylight in a room and its size, aperture configuration, shading devices and external obstructions. To make this process interesting and fun to play with, the calculations are optimised to be as…

Board Decision-Making

Having been on a number of Boards of different sizes and facing many different types and scale of problem over the years, I think that one of the things that really defines a Board is how it goes about making and documenting its decisions. The Typical Way The typical approach when something comes up that a Board must deal with is to add it to the agenda, have a discussion about it, propose a…

Social Media and Civility

There have been a spate of articles in the local press recently discussing how the rise of social media has led to a decline in civility within the community and decrying people’s willingness to rush to judgement. A common lament is that the relative anonymity of online interaction and the need to make the greatest impact invariably leads to acrimony, accusation and indignation. This is then…

Some New Solar Articles

Introduction When writing technical documentation for my APIs and libraries, I often start including all sorts of information on the concepts and physics that underpin them. At some point, when the pages get so long that no-one is ever going to actually read them, I have to take a step back and think about a better way forward. I am currently working on a whole bunch of different stuff in…

Solar Position

Introduction The rotation of the Earth and its orbit around the Sun are the result of many complex factors, so the mathematical equations required to accurately model them are not trivial. Firstly, the shape of the Earth’s orbital path around the Sun varies from close to circular to being more elliptical every 100,000 years or so. Secondly, the tilt angle of its rotational axis relative to…

Sky Distribution

Introduction When observed from the ground, the distribution of light over the skydome is rarely uniform. Solar radiation from the Sun travelling through the Earth’s atmosphere can be absorbed, reflected and scattered in all directions by gas and dust particles as well as clouds of moisture vapour. Cloudiness and turbidity are also highly dynamic and, when driven by winds in the upper…

The Wonders of Duck Typing

Introduction It’s only when you move from JavaScript back to another language that you realise some of its absolute pleasures. One of those has to be duck typing . Background I am currently working on a WPF app in C# that visualises and manipulates some structured building data in OpenGL and displays a couple of linked charts. In that one single app, its various components store and handle…

Significant Latitudes

Introduction Terrestrial latitude refers to the angle taken from the geometric centre of the Earth between the given surface location and the plane of the Equator . Latitude angles above the Equator (towards the North Pole ) are positive and angles below the Equator (towards the South Pole ) are negative. As a result, latitude angles also define the relative directions of North and South on the…

The Profligacy of Immutability

Introduction There are reasons that we stopped chiselling information into stone tablets, so let’s just hope those same lessons can be re-learned before we head too far down that road again with immutable data objects. The Analogy Things constantly change - ideas, facts, numbers, etc. And when they did, we couldn’t just rub out and replace a few words on our stone tablet. We had to go…

Significant Days of the Year

Introduction The elliptical nature of the Earth’s orbit around the Sun and the fact that its axis of rotation is tilted at 23.437° to the orbital plane are the main reasons we experience seasonal changes in weather conditions over the course of each year. The further a site’s location is away from the Equator and closer to the poles, conditions in December and June begin to vary quite…

Significant Times of Day

Introduction This article describes the various times of day that have some solar significance. During the course of any normal day, the Sun rises from the East in the morning, passes in an arc across the sky during the day, and then sets in the West in the evening. This daily process is characterised by periods where there is no available skylight (night time), a gradual increase in skylight…

Sky Distribution Equations

Introduction Whilst trying to validate my implementation of the CIE Standard General Sky equations in my CIE Sky Generator web app, I noticed that there was always a small but significant difference in the values of relative sky illuminance when directly compared with results from other popular tools such as Radiance, DaySim and HoneyBee. Looking closely at their source code, it appears that they…

Comment Policy

Policy Whilst we appreciate any comments that you might make anywhere on our site, those comments must follow this comment policy or they will be removed. Continuous abuse of this policy will result in a permanent ban of the IP address, domain and/or the email address generating those comments. Using a Real Name We do not allow keywords jammed into the name field. You must use your actual name or…

Architects and the R-Codes

Introduction The Residential Design Codes (R-Codes) were introduced in Western Australia in 1985 and govern the design of most residential developments throughout the state. Since that time, the codes have evolved into what I believe is a pretty useful and thoughtful document that encourages designers to not just blindly follow a set of prescribed standards, but to carefully consider the outcomes…

Recent Service Interruption

Overview This blog is run on the servers of a fairly traditional web hosting service and is a pretty simple static website with just html and javascript files, together with a bunch of images. However, every month or so for the past year, various html files from different parts of the site would just disappear, resulting in the occassional 404 error message and even the entire site falling over…

Psychrometric Chart

Figure 1 : A screenshot of the Psychrometric Chart app running within a web browser. Launch app in new tab... The terms psychrometry and psychrometrics refer to the study of moist air and its thermodynamic properties. Whilst obviously important in the design of air-conditioning systems, these same thermodynamic properties are key determinants of thermal comfort within a building, which makes…

CIE Sky Generator

Figure 1 : A screenshot of the CIE Sky app running within a web browser. Launch app in new tab... This web application lets you interactively experiment with the latest Perez All-Weather Sky model, which is the basis for the CIE Standard General Sky methodology described in both ISO 15469:2004(E) and CIE S 011/E:2003 . This is basically a mathematical model for calculating representative spatial…

New Schedule Editor

Introduction A screenshot of the new schedule editor. I just added a new annual hourly schedule editor to my online tools . This tool has been in the works for quite a while as it has taken me several iterations to settle on the right combination of workflows and user interface. It’s worthy of some discussion though as I have not seen other similar tools out there and it involved making some…

Schedule Editor

Figure 1 : A screenshot of the Schedule Editor app running within a web browser. Launch app in new tab... This application serves as an online visual editor for annual hourly schedule data. Schedules are basically just a list of one or more daily profiles together with information about which profile applies to each day of the year.

Data View 2D

Figure 1 : A screenshot of the Data View 2D app running within a web browser. Launch app in new tab... This application is a simple 2D chart that displays detailed hourly weather and/or analysis data across the year. Use the selector bar along the bottom to choose a particular date range, which controls the main chart above to show one or more data lines or area values over that range. This chart…

Why Educational Tools

Introduction For me, developing building analysis tools that run entirely within a web browser has been quite a learning process. Using only HTML5, WebGL and JavaScript means working within some very specific limitations, not only in what you can do but how you can do it. When I first start out on a new app at the moment, I often don’t yet know if many of the core ideas are even possible let…

JSON Settings

Figure 1 - The location of the `Edit Settings as JSON...` menu item in the interface. In all of my most recent web apps there is an Edit Settings as JSON… option in the Settings menu. This displays a dialog box that allows you to edit each applications configuration data as either a hierarchical tree list or directly as JSON text. JSON stands for JavaScript Object Notation and refers to a simple…

3D Annotations

Figure 1 : A screenshot of the 3D Annotation app running within a web browser. Launch app in new tab... This app provides both a simple demonstration of my new model annotation features as well as an interface for designing and refining annotations for use within a 3D model. An annotation is basically an image or some text with an optional background, indicator line and arrow that points to some…

3D Text

Figure 1 : A screenshot of the 3D Text app running within a web browser. Launch app in new tab... This app is both a comprehensive test framework for my new triangulated 3D font library and an interactive designer that lets you visually customise text to your specific requirements. You can dynamically adjust various font parameters including different shapes, spacings and extrusions. Use the…

Two New Web Experiments

I have always wanted the one platform where I could both perform building analysis and interactively explain or demonstrate the results. Ecotect got pretty close towards the end with its Lua-based scripting, but you couldn’t easily indicate or highlight things directly within the 3D model. However, with my web apps, I want to make sure that this kind of functionality is baked in at their…

Long Time, No Blog

Whilst there has been some activity on my site with new web apps and the likes, over the past 20 months no actual blog posts have yet made it past draft stage. This is kind of weird as I do spend a fair bit of time writing stuff for it. Obviously every precious second I get at a computer is spent coding, but I do love lying in bed physically writing with a pen tablet and find that just the process…

Dynamic Daylight Simulation

This report is a detailed supplement to the research paper titled " Dynamic Real-Time Daylight Simulation published in proceedings of the PLEA 2017 Conference in Edinburgh. Abstract Research shows that real-time visual feedback can greatly assist the process of identifying and understanding complex cause and effect relationships. Whilst not all physical processes in the performance analysis of…

Weather Data

Figure 1 : A screenshot of the EnergyPlus 3D Weather Data app running within a web browser. Launch app in new tab... The aim of this app is to read and display EnergyPlus weather data files ( *.EPW ). These files contain annual hourly data for a range of weather metrics for stations around the world and are available from either the EnergyPlus Weather Data Website or Climate.OneBuilding.Org .

Dynamic Overshadowing

Figure 1 : A screenshot of the Dynamic Overshadowing app running inside a web browser. Launch app in new tab... The aim of this app was to investigate the possibility of generating real-time interactive shading masks using WebGL and JavaScript. A shading mask is simply a map of which parts of the sky dome are visible from a particular point and which are obstructed by opaque objects in and around…

Dynamic Shadows

Figure 1 : A screenshot of the Dynamic Shadows app running within a web browser. Launch app in new tab... This is my first real experiment with shadow mapping in WebGL. I’ve always used shadow volumes in previous OpenGL work, but calculating and projecting visible edges in real-time in JavaScript seems unnecessarily onerous. Thus, I wanted to see how much of the process could be done on the…

Daylight Analysis (Old)

NOTE: This tool has been superseded by a newer and more functional version . This older version has been retained here for archival purposes. Figure 1 : A screenshot of the Dynamic Daylight Analysis app running within a web browser. Launch app in new tab... The aim of this app is to dynamically model the relationship between room size, window layout and the spatial distribution of internal…

Moving From Drupal to Hugo

Introduction I have used Drupal as the back-end of my blog ever since I started it in 2009, and it powers several of my other sites. However, the ongoing maintenance and constant life-support it seems to need lately is becoming disproportionate and the thought of upgrading again to version 8 was starting to fill me with dread.

Understanding WebGL

Figure 1 : A rectangular prism with 8 corners and 6 faces. Reconciling how best to utilise vertex buffer objects in OpenGL and WebGL didn’t come easy to me for some reason as it required almost a complete paradigm shift in my thinking. At its source, this was fundamentally a disagreement over implementation. In all my own modeling libraries and data structures, I use both face-based…

Pictures of John - 3 to 4yrs

3 to 4 Years Old

BIM and NatHERS Headaches

Overview The core idea of BIM is to maintain a central repository of information that models as closely as practical the built form of the building being designed, and to allow the different disciplines involved to directly access and update those bits of information that they need or are responsible for. The design team and consultants work together to embed within the model everything required…

Surface Reflectance

Reflectance Distribution : This interactive tool demonstrates the differences between diffuse and specular reflections. Use your mouse or finger to click and drag the blue circle to adjust the angle of incidence of light on the surface. Then use the two sliders to adjust the reflectance and specularity properties of the surface to see the resulting reflection distribution. This tool was developed…

Refraction Effects

Light Reflection and Refraction : Use this tool to experiment with different incidence angles and refractive indexes to see the impact they have on refraction effects. This tool was developed to form part of the Performative Design Refractive Index definition page. This interactive illustration represents a cross-section through the interface between two transparent materials. When a light beam…

Web Experiments

The following are just small web apps developed as a way of porting, testing and optimising some of my C#/Java analysis and visualisation libraries into JavaScript. These first few deal mainly with solar position and shading, but do get into some real-time geometry and mesh manipulation. With some I have been able to flesh them out into independent educational apps, however some are marked only as…

3D Sun-Path

Figure 1 : A screenshot of the 3D Sun-Path Diagram app running inside a web browser. Launch app in new tab... This app connects an interactive Google World Map to a 3D Sun-path diagram, shadow map generator and a 2D SVG chart displaying a range of solar information. The SVG chart defaults to showing the annual variation in day-length, but you can also select an analemma chart or several different…

Pictures of John - 2 to 3yrs

2 to 3 Years Old

Earth and Sun

Figure 1 : A screenshot of the Earth/Sun Relationship app running inside a web browser. Launch app in new tab... The aim of this app is to model the orbital relationship between the Earth and the Sun that results in what we see as relative solar motion. You can use the buttons located in the top-left to switch between geo-centric (where the Earth is the view focus) and helio-centric (where the Sun…