# Meridian Light · Three planes

A digital bench proof after Iana Kochu’s *Red Meridian*. The original supplies the outline of the crimson field, the blue sweep, the olive forms and the amber disc. The approved Meridian Light concept supplies the warm transparent material direction. The physical sample is still to be made.

[Open the viewer](index.html) · [Original painting](../../assets/red-meridian.jpg) · [Oblique still](cover.png) · [Front still](front.png) · [Raised lamp still](raised.png)

## Build dimensions

| Part | Nominal size and placement |
| --- | --- |
| Three clear plates | 160 × 164 × 3 mm each. Lay out a 154 × 154 mm painted square with 3 mm clear at the top and both sides, and 7 mm clear at the bottom. |
| Plate centers | Rear at −24 mm, middle at 0, front at +24 mm, along the axis toward the viewer. 21 mm clear space between adjacent faces. |
| Slotted base | 176 × 82 × 18 mm oak block, with three stopped slots each 164 mm long, 3.7 mm wide and 6 mm deep. Center the slots 24 mm apart. The rendering includes a dark inset foot. |
| Receiving wall | Matte warm white, 108 mm behind the middle plate center and 84 mm behind the rear plate center. |
| Light | A compact warm lamp from the upper left, aimed at the assembled plates. Preset coordinates appear below. |

Use three polished-edge low-iron glass blanks. Check the slot width on an offcut first, then dry-fit the plates with small compressible shims hidden in the channels. Keep the assembly on a level bench. The plate graphics are shown from the viewing side. Transfer them to the viewer-facing surfaces and seat all three upright. The dashed line on each sheet marks the top of the slot. Leave the bottom 6 mm clear.

1. [Rear · Crimson field](plate-01-crimson.svg). Preserve the clear openings for the contours and disc.
2. [Middle · Olive and ink contours](plate-02-contours.svg). Glaze the left olive shape, ink sweep, lower green form and pale almond.
3. [Front · Amber disc](plate-03-amber.svg). Keep the surrounding plate clear.

Print each SVG at 100% or **Actual size** on A4 or larger. Verify the 50 mm bar before transferring. The colors are layout cues. A thin translucent glaze pass on an offcut will let the first physical session compare paint density against the wall color.

Lamp coordinates are in millimetres from the center of the stand at the benchtop. Positive X is right, positive Y is up and positive Z is toward the viewer. The model samples a roughly 22 mm wide lamp around each center.

| Preset | X | Y | Z |
| --- | ---: | ---: | ---: |
| Grazing | −320 | 335 | 380 |
| Raised | −145 | 483 | 355 |

The key comparison is the disc’s alignment from the front, its separation at 23° to the right, and the lower wall shadow under the raised lamp. Record a fixed-exposure photo at each position in the physical trial.

## Digital assumptions

- The contours are a manual Bézier trace from the square canvas region of the painting photo. The viewer and the print sheets both use [the same path and dimension data](geometry.mjs). The source photo adds local brush variation inside the traced forms.
- Each plate has independent thickness, position and tint. Camera rays layer the glaze and the clear glass. Light rays cross the same painted masks and multiply their tint before reaching the wall or shelf. A small sampled light aperture and filtered masks soften the edges. The base blocks the lamp where the geometry intersects.
- The camera uses orthographic front and oblique views. The model approximates surface reflection, pigment and lamp spread. Pigment recipes, substrate scatter, actual brightness, color, and the mechanically fitted assembly remain for the physical trial.

## Reproduce

From the Kochu Studio prototype folder, run `python3 serve.py --port 4387`. Open `http://127.0.0.1:4387/material-proofs/meridian/`. The viewer uses WebGL2, local assets and a static cover fallback.

Run these commands from this study folder with the preview server running.

```sh
python3 verify-browser.py
python3 verify-browser.py --capture
```

The browser check uses the installed Chrome channel, Playwright and Pillow. Capture mode renders art-only views at 2400 × 1800 from the same shader and downsamples them to 1200 × 900. To regenerate the print sheets after a trace change, run:

```sh
node --input-type=module -e "import {writeFileSync} from 'node:fs'; import {plates, printSvg} from './geometry.mjs'; for (const layer of plates) writeFileSync('plate-' + layer.id + '.svg', printSvg(layer));"
```
