Beegraphy : exploring solar paths

This tutorial aims to facilitate the creation of a solar path, ensuring accurate determination of the sun’s position, orientation, and altitude. This precision is invaluable for architectural design, enabling architects to optimize building orientations for solar efficiency. Additionally, it serves as a tool for verifying the solar orientation of heritage sites.

This approach enables the precise tracing of solar paths and orientations throughout history. Various software tools and methods exist to determine the position of the sun at any point in the past, making it particularly valuable for archeoastronomy purposes.

We will use Beegraphy, the online Grasshopper for that.

Is this tutorial we will learn how to

  • Retrieve environmental data
  • Create a list and convert string to text, degrees to radians
  • Convert polar coordinates to Cartesian coordinates
  • Construct la curve by interpolating points
  • Create and place a text
  • Create a sequence to have a print a series of numbers at a specific location
  • Create a loft and add colours
  • Edit groups and component for further public use
  • Testing a small simulation.


Why taking Beegraphy when many software could do that almost automatically?

Relying solely on software doesn’t necessarily foster a deep understanding of our subject matter. By recreating a solar system, we gain insights into its functioning and the reasons behind various phenomena we observe. This process allows us to scrutinize, verify, and validate the information at our disposal. Additionally, we have the freedom to chart our own path of inquiry and frequently unearth fresh, original concepts. It’s akin to selecting an image from a catalog versus crafting one’s own. While the former confines us within predetermined choices made by others, the latter empowers us to make independent decisions and conduct our own analyses.

BeeGraphy is an innovative cloud-based platform tailored for computational designers. It provides effortless cross-platform compatibility, removing the requirement for installations, thereby facilitating seamless usage on Windows, Mac, or Linux systems. By enabling model creation directly in the cloud and allowing easy sharing through a straightforward URL link, BeeGraphy fosters real-time collaboration and co-creation among individuals and teams. Beegraphy ensures that you can share your parametric models securely without disclosing the underlying script, empowering to present designs confidently. Additionally, Beegrapgy offers the opportunity to showcase and market models in Beegraphy online store, generating passive income.


The concept entails generating a solar trajectory based on coordinates. This method ensures accurate determination of the sun’s position regardless of location or time. Ultimately, a vector will be produced, originating from the sun and extending to a designated point. This vector aids in determining whether a sunbeam intersects a specific point or passes through a particular architectural structure.


Sun coordinates can be accessed from various websites, with SunEarthTools being a highly regarded resource. This platform enables users to calculate the altitude and azimuth coordinates of the sun at a specified location.

For this example, I’ll take Erevan in Armenia. It’s an homage to Beegraphy developers. Don’t forget to type Execute whenever a change is made.

The site provides sun charts


sun position Elevation Azimuth latitude longitude
21/03/2024   19:04 | GMT3 -10.07° 279.45° 40.1777112° N 44.5126233° E
twilight Sunrise Sunset Azimuth Sunrise Azimuth Sunset
twilight -0.833° 06:03:23 18:15:20 88.77° 271.49°
Civil twilight -6° 05:36:17 18:42:26 84.39° 275.89°
Nautical twilight -12° 05:04:34 19:14:14 79.13° 281.17°
Astronomical twilight -18° 04:32:17 19:46:38 73.54° 286.81°
daylight hh:mm:ss diff. dd+1 diff. dd-1 Noon
21/03/2024 12:11:57 00:02:40 -00:02:39 12:09:21

What we are looking for is this list of coordinates showing Elevation and Azimuth.

Date: 21/03/2024 | GMT3
coordinates: 40.1777112, 44.5126233
location: Erevan, Arménie
hour Elevation Azimuth
06:03:23 -0.833° 88.77°
7:00:00 9.96° 97.97°
8:00:00 21.12° 108.4°
9:00:00 31.57° 120.45°
10:00:00 40.64° 135.3°
11:00:00 47.31° 154.05°
12:00:00 50.26° 176.47°
13:00:00 48.67° 199.52°
14:00:00 43.01° 219.55°
15:00:00 34.55° 235.5°
16:00:00 24.45° 248.29°
17:00:00 13.47° 259.12°
18:00:00 2.09° 269.01°
18:15:20 -0.833° 271.49°

Ok just to be clear (


Elevation is the angle from the ground to the sun, Azimuth is the angle from North Direction to the projection of the sun on the ground. The elevation is the vertical angular distance between a celestial body (sun, moon) and the observer’s local horizon or, also called, the observer’s local plane. The azimuth is the angle between North, measured clockwise around the observer’s horizon, and a celestial body (sun, moon).

Using the data

Copy the Elevation Data from SunEarthTools and paste them in a Testbox in Beegraphy. Erase the ° sigh which would create mistakes.

Text Area Input

To use those numbers which are now considered as text, to real numbers. We also need to use those numbers, one by one. It’s two things to do.

We can verify that the Text Area Input create a long line of numbers

We need a list.

For that, we will create a break after each number. We add an empty Text Area Input, click Enter in it and we connect the whole to Text Split. Here we go. We have a list.

Ok, but the list is still a String list, meaning it’s not seen as numbers, but as words. Let’s convert using a String to Numbers component.

Ok we see the difference. We now have numbers.

We’ll do the same with the Azimuth Data

This is the expected result, with Elevation and Azimuth

Converting Azimuth and Elevation to XYZ Coordinates.

Now we have to convert our polar coordinates to XYZ coordinates? For this we will use this Formula

x = R * cos(ϕ) * sin(θ)

y = R * cos(ϕ) * cos(θ)

z = R * sin(ϕ)

Where R is the distance of the point from the origin, θ (the azimuth), and ϕ (the elevation)

We see that we have our angles in degrees and we need to use Radians. One more little conversion.

We do that for both outputs

In the Formula R is a circle Radius. So we need a circle. Let’s create one and we will define the Radius with a Range Input to be able to change the values.

Now it’s just a matter of connecting our values to SIN and COS

This is the final assemblage. The R mark indicates that it is connected to the Circle Radius

Now we connect a Construct Point to have our solar positions from which we can have the Solar Path

Mission accomplished, from that we can trace a line to visualise and use the solar ray whenever we want to.

Adding texts.

Adding a text in Beegraphy is easy and not easy.

First we have to upload a Font
Back in the home space, we must identify the assets

In assets we can upload our fonts

Then we can go back to our model space. Select the Font Component and choose the Font that will be used:

We take the Text component

This is the final setup

Adding hours at every solar position

We want to automatically number the hours. For that we will use a List Sequence Component

The Start value corresponds to the first hour, in our case 7:00 am

Count is the number of values, we can have it from the number of points using the List Length.

Step, is how we go from one value to the next. As it is every hour, it will be 1.

This is the final setup

We used a In Connector as a relay to connect the List Length. The connector is just the way to organise our working space.

The detail of the setup for the text.

Solar Beam

Ok, now we want to visualise the solar Beam. It’s easy.

We just have to define a Point on Curve

The Parameter describes a value ranged between 0 to 1.

Note : It is possible to edit components description. Very useful, we will see why afterwards.

Just double click on the text and edit it.

The final setup will look like that

To better view the sun path, we can create a fan that represents all positions and vectors.

Ok, our sun path system is set, this is how it looks

Doing groups allows to know precisely what is doing what. We will see why now.

Sharing, playing with

By clicking on the diamond, we have access to an open access interface to play with the components

We find all our components and variables to play with


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.