Initializing 3D Canvas...

Solar & Acoustics

3 min read1 page

Solar Vector Calculations & Shadow Envelopes: In bioclimatic architecture, passive solar heating and daylighting require precise geometric tracking of the sun's path. Given geographic latitude and time of year, solar altitude $\theta$ and azimuth $\phi$ yield a unit ray vector. Projecting building roof cornices along this vector reveals shadow polygons cast onto neighboring structures and streets.

Solar Projection Invariant:

1. Spherical Coordinate Transform: Altitude θ in [0, 90°] and Azimuth φ in [0, 360°]. 2. Direct Irradiance: Surface solar flux I = I_0 max(0, n · s_sun). 3. Right-to-Light Envelopes: Governs zoning regulations to prevent new skyscrapers from eclipsing public parks.
python
1import numpy as np
2
3def compute_solar_vector(altitude_deg, azimuth_deg):
4 """
5 Computes unit sun vector pointing towards the sun.
6 Altitude: angle above horizon [0, 90].
7 Azimuth: clockwise angle from North [0, 360].
8 """
9 alt = np.radians(altitude_deg)
10 az = np.radians(azimuth_deg)
11
12 # Coordinates in East-North-Up frame:
13 sx = np.cos(alt) * np.sin(az) # East
14 sy = np.cos(alt) * np.cos(az) # North
15 sz = np.sin(alt) # Up (Zenith)
16 return np.array([sx, sy, sz])
17
18def project_shadow_polygon(roof_polygon, sun_vec, ground_z=0.0):
19 """
20 Projects shadow of 3D roof vertices onto ground plane along solar vector.
21 P_ground = P - (P_z - ground_z) / sun_vec_z * sun_vec
22 """
23 shadow = []
24 for pt in roof_polygon:
25 t = (pt[2] - ground_z) / sun_vec[2]
26 shadow_pt = pt - t * sun_vec
27 shadow.append(shadow_pt)
28 return shadow
Solar Altitude (deg)
40.00
Solar Azimuth (deg)
135.00
2 min read1 page

Architectural Acoustics & Specular Ray Tracing: In symphony halls and auditoriums, sound waves travel through air and reflect off curved ceiling canopies. Under high-frequency geometric acoustics (where wavelength is small relative to panel dimensions), sound behaves like optical rays: the angle of incidence equals the angle of reflection ($\theta_r = \theta_i$). Tuning ceiling curvature ensures even sound dispersion to rear balcony seats without acoustic flutter echoes or caustic focal hotspots.

Acoustic Ray Invariant:

1. Specular Reflection Law: r = d - 2(d · n)n. 2. Ceiling Curvature Control: Convex reflectors diffuse sound energy; concave reflectors create focal echo concentrations. 3. Delay Gap & Intelligibility: First reflection must arrive within 50 ms of the direct sound path for speech clarity.
python
1import numpy as np
2
3def reflect_acoustic_ray(ray_origin, ray_dir, surface_normal):
4 """
5 Computes specular sound ray reflection vector (Snell's Law of Acoustics).
6 Angle of incidence theta_i equals angle of reflection theta_r.
7 r = d - 2 * (d . n) * n
8 """
9 n = surface_normal / np.linalg.norm(surface_normal)
10 d = ray_dir / np.linalg.norm(ray_dir)
11 r = d - 2.0 * np.dot(d, n) * n
12 return r
Ceiling Curvature (+Convex / -Concave)
0.40