# Folded Reflection

Light experiment 09 · Cylindrical mirror anamorphosis after *Quiet Face I*.

[Open the live study](http://127.0.0.1:4387/light-experiments/folded-reflection/) · [Print sheet](./plate.html) · [Warped ink PNG](./warped-print.png)

The stretched shape on the paper and the portrait in the cylinder use the same fixed print. Start at **Marked spot** (0°), then move the eye using the slider or choose **Off-axis** (+34°). The slider covers −38° to +38° in 1° steps. The arrow keys move the eye in steps, Home and End take it to either limit, and both presets support standard button keys. The two recorded views below the live table show the same setup at 0° and +34°.

## How the image gets onto paper

The source is the existing [*Quiet Face I* photograph](../../assets/quiet-face-i.jpg). An inset, hand-traced mask follows the oval painting so the warped ink is drawn from the paint in that photograph. The projection uses a 640 × 955 source crop and a fixed pinhole eye.

In the model, the upright cylinder has radius 1 and height 2.72. Its axis passes through the origin of the paper plane at `z = 0`. The marked eye is at `(0, −9.5, 7)` and looks at `(0, −2.24, 0.78)`. The control rotates the eye and viewing direction around the cylinder’s vertical axis. The print and cylinder keep their world positions.

- **Design the print.** Each mirror azimuth in a front arc of ±0.80 radians gives an outward ray direction after specular reflection. The direction in the horizontal plane is independent of mirror height. For each paper texel, the inverse pass bisects that arc to locate the ray that crosses it. The distance along the horizontal ray gives the height of the mirror hit. Project that point into the marked eye’s image plane and take the source colour at the resulting coordinates. The result is the fixed 1782 × 1260 ink raster.
- **Trace the view.** For each viewing ray, a quadratic finds the first cylindrical side hit, with a separate cap check. At a side hit, reverse the eye ray by specular reflection, using `d′ = d − 2(d · n)n` with the horizontal surface normal `n`, and intersect the reflected ray with `z = 0`. Read that paper coordinate from the baked PNG using bilinear sampling. The live renderer only loads the warped print. Separate lighting terms give the table, cap and metal rim their appearance.
- **Scale the sheet.** The A4 landscape template uses 25 mm per model unit and prints at actual size. Its 20 mm line and 50 mm diameter cylinder footprint are alignment aids. The ideal eye is 237.5 mm in front of the cylinder centre and 175 mm above the sheet. The PNG is the transparent ink layer without registration marks.

## What was checked

The isolated Chrome verification regenerated the same ink PNG and checked every nonzero-alpha source pixel centre. All **438,068** land inside the paper and map back within 10⁻⁶ in normalized source coordinates. The transparent corners of the enclosing rectangle can lie outside the chart. [Verification script](./verify.mjs)

From **27,225** opaque reference samples, **27,194 (99.89%)** recovered ink at 0° with a mean absolute RGB error of **1.60 on a 0–255 scale**. At +34°, **18,348 (67.39%)** still sampled ink at those same screen positions. That second number measures occupancy at fixed positions as the portrait moves and stretches. The marked samples had a maximum normalized round-trip error of 1.17 × 10⁻⁹ and zero sampled local fold signs.

Desktop keyboard and mouse, mobile tap and keyboard at 390 px, and the script-disabled still all passed. Chrome produced a one-page A4 landscape PDF and downloaded the ink PNG. The default canvas matched the art-only cover and the off-axis canvas produced a different frame.

Run this from the study directory with the Kochu Studio server on port 4387 and a locally available Playwright and Google Chrome. Set `PLAYWRIGHT_PACKAGE` to the installed Playwright package path if needed. Add `--capture` to regenerate the study images.

```sh
node verify.mjs
```

## Limits

The mirror uses a selected front sector and one design eye. A wider or folded map can assign multiple desired colours to a single paper point, and portions of a broader target can fall outside the sheet or behind the cap. The visible oval fits this chart. Raster sampling at the antialiased edge still produces subpixel ink losses. The side assumes perfect specular geometry, the eye is a point, and the stage lighting is illustrative. This template has only been tested digitally. Mirror imperfections, viewing with two eyes, paper surface and printer scaling would affect a physical result.

## Precedents

- István Orosz’s 1998 reflective metal cylinder for his anamorphic print *The Well*. [National Gallery of Art collection](https://www.nga.gov/artworks/223616-untitled-cylinder-view-anamorphosis-print-well).
- A c. 1850 mirrored cylinder and painted cards, with a circle marking where to place the cylinder on each card. [National Trust collection, object 657394](https://www.nationaltrustcollections.org.uk/object/657394).
- Francesco De Comité describes using ray tracing to design mirror anamorphoses for a given surface and eye position and discusses overlap as a source of failure. [*A General Procedure for the Construction of Mirror Anamorphoses*, Bridges 2010](https://archive.bridgesmathart.org/2010/bridges2010-231.pdf).
