The Sun Is a Zoning Rule You Can Compute: Knowles' Envelope and Zürich's Three-Hour Shadow
Ralph Knowles' solar envelope and Zürich's ABV § 30 shadow rule share one inequality. Carve the hull, test the tower, loft it in Grasshopper + Rhino.
At 47.4° N on 8 February, the sun is highest at 12:40 CET, at 27.1°. Keep the neighbour’s ground line in sun from 10:00 to 14:00, and a 40 × 30 m plot keeps an envelope that peaks at 12.4 m, or four floors at the ridge. Protect the whole day, 08:00 to 17:00, and the same plot keeps 0.9 m. Move it to Los Angeles at 34° N and the ridge rises to 21.0 m, or seven floors.
The rule is one inequality, checked again and again through a window of the day: h ≤ fence + d · tan(altitude). From any point, follow the shadow to the protected line and measure the distance, d. The sun’s altitude then tells you how tall that point may be. Repeat every ten minutes and keep the lowest answer. The result is a hull: the largest volume that never shades the neighbour during the hours you chose.
The man who drew the hull
Ralph L. Knowles (1928–2024) taught architecture at the University of Southern California for about forty years. In Energy and Form (MIT Press, 1974) and Sun Rhythm Form (MIT Press, 1981) he turned sun access into a zoning device: the envelope says nothing about style, it only marks where anything may be built. According to Mimi Zeiger’s 2017 profile in Metropolis, solar-envelope zoning is “a legal designation that if adopted as policy would guarantee solar access in urban areas.”
He made envelopes buildable with two levers, and the sketch gives you both. The fence is the height on the neighbour’s boundary above which shade is allowed. The street moves the protected line to the far kerb. The fence matters more. Protecting only the floors above 6 m raises the February volume from 5 298 m³ to 12 498 m³. A 20 m street to the north only gets you to 8 251 m³.
Zürich wrote it the other way round
Canton Zürich does not carve the volume. It tests the volume you drew. PBG § 284 Abs. 4 (1975) says a Hochhaus, meaning a building of 25 m or more, may not substantially impair its neighbourhood, in particular through shadow. ABV § 30 (1977) gives the number. On the mean winter days, 3 November and 8 February, an inhabited neighbour may not be shaded for longer than a fixed number of hours, “in der Regel an ihrem Fusspunkt gemessen”, so as a rule the shade is measured at the foot of the building. The method comes from the Amt für Regionalplanung’s 1967 «2-Stunden-Schattenkurve». Its authors calculated everything on a flat plane from the position of the Eidgenössische Sternwarte.
The limit was two hours until 31 July 2021 and has been three hours since 1 August 2021. In TEC21 35/2010, Josua Raster of Basler & Hofmann wrote that the shadow rule does for towers what the setback rule does for ordinary buildings. For his tower of almost 55 m, half an hour could decide the permit. According to the Regierungsrat’s press release of 26 March 2020, a longer permitted shadow lets a high-rise stand closer to its inhabited surroundings, so the city can make better use of its existing high-rise potential.
←TODAY: Since 1 August 2021, ABV § 30 allows three hours of shade on the mean winter day instead of two.
→3012: In Zurich-3012, every plot publishes its own sun hull, and every permit starts by lofting it.
Fulcrum: Knowles carves what you may build and Zürich tests what you drew, with the same inequality read in opposite directions.
Width, not height
Take a tower with a 24 × 24 m footprint. At 25 m high, the area shaded for three hours or more reaches 32 m from the tower’s face and covers 1 772 m². At 55 m high it reaches 31 m and covers 1 726 m². On the mean winter day the sun moves about 14° of azimuth per hour. So a point stays in shade for three hours only if it lies within about ±21° of the shadow’s direction, and the width of that cone depends on the footprint, not the height. Height only stretches the one-hour fringe, from 8 325 m² to 19 774 m². A slender tower passes where a wide slab fails.
For the 55 m tower, the old two-hour curve reached 64 m. Those 33 m are what 2021 gave back to the city. The price is a third hour of February shade for whoever stands inside the new curve.
The exercise
In ENVELOPE mode, set the day, the window and the latitude, then move the fence and the street. Download the grid (x, y, h_max) as a CSV and loft it in Grasshopper + Rhino as a massing hull. In SHADOW mode, place the tower, switch between the 3 h and 2 h rules, and click to pin the neighbours’ foot points. Nine small functions sit behind “view / remix the code”.
This is a teaching model, not a Schattendiagramm. It assumes flat ground and box volumes, with no refraction and no terrain. The cantonal Vollzugshilfe (August 2021) still requires the real graphic proof, measured from 08:00 to 17:00 CET. The city’s vote of 27 September 2026 on the Hochhausrichtlinien (62.55 % yes) is why this question is on every Zürich desk this autumn, but it did not change the cantonal shadow rule.
Atelier: An office pitching a tower this autumn needs the rule written down before the client falls for a shape. Monday move: run every footprint through SHADOW mode at both 2 h and 3 h, pin the three nearest inhabited foot points, and file the result next to the Grasshopper definition.
Hack: Turn Knowles’ envelope into one function for a GhPython component on the Rhino canvas. Each sample pairs the distance to the protected line, measured along that moment’s shadow, with the sun’s altitude. The lowest result over all the samples is the height that point may reach.
import math
def h_max(samples, fence=0.0):
# samples: (d, alt_deg) per 10-min step
return min(fence + d * math.tan(math.radians(a)) for d, a in samples)
print(h_max([(20.0, 27.1)])) # 8 Feb noon alone: ~10.2 m
Every hour you protect adds samples, and every sample is another ceiling. Carve one real plot at 10–14 and again at 8–17, and loft both hulls before your next volume study.
PAZ Kaffi · multidisciplinary editorial, led by PAZ Academy