Computational Sculpture: After Herbert Bayer (revisited)
[mathematica
sculpture
llm
gpt6
]
Nearly three years ago I tried to have GPT-4-vision reproduce Herbert Bayer’s sculpture “Articulated Wall” with lackluster results. Time to revisit the problem with GPT-6-Astra…
The Prompt
A new codex session with gpt-6-astra-medium was prompted with the following instruction:
Look up images of Herbert Bayer’s sculpture “Articulated Wall (1986)” and generate a Mathematica notebook that reproduces the object and visualize it.
(no plan mode) It then cooked for 5 minutes (while I took out the trash) and returned with a summary and a notebook with the following contents (it placed the two large code blocks into an external .wl file, which I have copy-pasted in situ for easier reference.). All text and code that follows is generated by GPT-6, except for the conclusion section at the end of the post.
Herbert Bayer | Articulated Wall (1986)
A photographic reconstruction in Wolfram Language
Evaluate the notebook from top to bottom (Evaluation > Evaluate Notebook). The saved 3D outputs can be rotated immediately. Evaluate the interactive cell for sliders. All geometry is generated locally; no external packages or image downloads are required.

Reference photographs and historical notes
This model represents the Denver sculpture. The Denver Design District dates it to 1986; the Denver Art Museum dates it to 1985. The title follows the requested 1986 convention. The museum describes 33 prefabricated concrete elements and an approximately 85-foot height. Older descriptions quote 32 elements; the default here follows the museum and CPR’s explicit correction to 33.
Reference image 1: Denver Design District (photograph and 1986 date)
Reference image 2: Stephanie Wolf / CPR, 2018 (close view and corrected beam count)
Denver Art Museum: Outdoor Art Around the DAM (33 elements, 85 feet, 1985)
Aaron Wright / Flickr (historical Design Center dimensions quotation)
Geometry and assumptions
All model coordinates are in feet. Beam length 41 ft and width 5 ft 2 in follow an older Design Center description reproduced by Aaron Wright. That description also reports 2 ft 7 in thickness and 32 beams. To reconcile the museum’s 33 beams with the nominal 85-foot height, this model uses thickness 85/33 = 2.57576 ft (30.909 in), close to the quoted 31 in. These are nominal dimensions, not a measured survey.
The photographs show repeated fan-like bands around a central vertical axis. A uniform 22.5-degree rotation per beam is a visual estimate, not a recovered construction specification. With 33 beams, the first-to-last rotation is 720 degrees; rectangular beams repeat their orientation every 180 degrees. This produces four visible repeating bands. The handedness, initial angle and camera can be adjusted. The concealed steel mast, surface joints and surrounding plaza are omitted.
For beam i = 0,…,n-1: z runs from i (h + gap) to i (h + gap) + h, and its horizontal rectangle is rotated through theta_i = phase + i step. With zero gap, adjacent beams touch at a horizontal face and overlap in plan around the central axis.
ClearAll[articulatedWall];
Options[articulatedWall] = {"BeamCount" -> 33, "Height" -> 85,
"Length" -> 41, "Width" -> 31/6, "StepAngle" -> 22.5,
"PhaseAngle" -> 0, "Gap" -> 0, "View" -> {2.6, -4.5, 0.4}};
articulatedWall[OptionsPattern[]] := Module[
{n = OptionValue["BeamCount"], h, len = OptionValue["Length"],
width = OptionValue["Width"], step = OptionValue["StepAngle"],
phase = OptionValue["PhaseAngle"], gap = OptionValue["Gap"]},
h = OptionValue["Height"]/n;
Graphics3D[
{EdgeForm[None], RGBColor[1., .78, .025],
Table[Rotate[
Cuboid[{-len/2, -width/2, i (h + gap)},
{len/2, width/2, i (h + gap) + h}],
(phase + i step) Degree, {0, 0, 1}, {0, 0, 0}],
{i, 0, n - 1}]},
Boxed -> False, Axes -> False,
Lighting -> { {"Ambient", GrayLevel[.45]},
{"Directional", GrayLevel[.8], ImageScaled[{2, -2, 3}]},
{"Directional", GrayLevel[.3], ImageScaled[{-2, 1, 1}]}},
Background -> RGBColor[.95, .96, .98],
ViewPoint -> OptionValue["View"], ViewVertical -> {0, 0, 1},
ImageSize -> {560, 760}, PlotRange -> All, SphericalRegion -> True]
];
Three-dimensional reconstruction
articulatedWall[]

Compare viewpoints
GraphicsRow[Table[Show[articulatedWall["View" -> v], ImageSize -> {270, 410}], {v, { {0, -4, 0}, {3, -4, 1}, {0, 0, 4}}}], ImageSize -> 1000]

Left: elevation. Center: oblique view. Right: plan. The plan shows eight distinct undirected beam orientations at the default 22.5-degree step.
Interactive exploration
The defaults reproduce the model above. Changing beam count preserves the 85-foot height at zero gap by changing beam thickness. Gap produces an exploded assembly and increases its overall height. Drag the 3D object to orbit it.
(* Interactive exploration *)
Manipulate[
articulatedWall["BeamCount" -> n, "StepAngle" -> step,
"PhaseAngle" -> phase, "Gap" -> gap],
{ {n, 33, "Beam count"}, 8, 48, 1, Appearance -> "Labeled"},
{ {step, 22.5, "Turn per beam (degrees)"}, -30, 30, .5, Appearance -> "Labeled"},
{ {phase, 0, "Overall rotation (degrees)"}, 0, 180, 1, Appearance -> "Labeled"},
{ {gap, 0, "Exploded spacing (feet)"}, 0, 2, .1, Appearance -> "Labeled"},
ControlPlacement -> Left, SaveDefinitions -> True,
TrackedSymbols :> {n, step, phase, gap}
]

Optional image export
Evaluate this cell to export a fresh PNG beside the notebook.
Export[FileNameJoin[{NotebookDirectory[], "ArticulatedWall-export.png"}],articulatedWall[], ImageResolution -> 200]
Concluding Commentary (added by the Human)
GPT-6-Astra did a remarkable end-to-end job at retrieving the images, performing geometry estimation, and writing working code and visualizations with minimal human input. The previous failures of December 2023’s GPT-4-vision have been overcome.
ToJekyll["Computational Sculpture: After Herbert Bayer (revisited)", "mathematica sculpture llm gpt6"]