A grid of diamond stacks, each hatched, each clipped against everything already drawn.
A stack per cell
The grid is GridSize × GridSize positions, and each holds a stack of Layers
diamonds offset by LayerDistance. The diamond is not a square rotated — it has its
own width and height, so the whole field is an isometric projection without a
projection matrix:
float sizeX = DiamondWidth / GridSize;
float sizeY = DiamondHeight / GridSize;
Because both sizes are divided by the grid count, raising the grid count makes more,
smaller diamonds over the same extent rather than a larger field.
A sixth of the cells. Each stack is complete when it is placed; the progression is cells
arriving, not layers.
Hidden-line removal, not painting
Every polygon is added to a PolygonList and clipped against everything already in it
before being drawn. Nothing is painted over: a line that would be hidden is shortened or
removed.
For a drawing made of strokes rather than fills that is the only option that works.
Painting over would need an opaque fill, which would make the piece solid; clipping
leaves it as line work that a plotter could produce, and every visible segment is a real
segment of a real diamond.
It also makes the drawing order load-bearing. Cells are walked in index order, and a
later cell can only ever remove from an earlier one — so the field has a consistent
front-to-back reading that nothing in the geometry specifies.
A third.
Half. The hatching density varies from cell to cell, between the two constants
minHatching and maxHatching — 1.0 and 0.275 units of line spacing. Tighter spacing
reads as darker, so the field has tone without having a fill.
Three quarters.
The full grid: eighty-one stacks of six diamonds.
Renderings
| Rendering | Grid | Layers | Ink |
|---|
| Neon Teal | 9 | 8 | teal on near-black |
| Phantom Purple | — | — | purple on black |
| Solar Orange | — | — | orange on near-black |
One plate in the gallery is the piece hung. MuseumFrame — the presentation
layer from SkiaSharp.Extensions — hangs the lead rendering the way a gallery
would: a charcoal wall, a cream mat with an opening, the artwork fitted into
it, and a near-black frame, with every band sized as a fraction of the shorter
canvas side. The frame knows nothing about the drawing and the drawing knows
nothing about being framed: the inner piece is generated identically to
Neon Teal and fitted into the opening, so the framing never touches the
generative geometry and could present any of the presets above without change.
GridType and HatchType select between layout and hatching variants, and each
colour preset carries its own seed, so the three are independent draws of the same
process rather than one arrangement recoloured.
Determinism
SeededRandom — the project’s stable Xoshiro256StarStar — is seeded from the preset
and consumed cell by cell in index order. Clipping is exact polygon arithmetic in a
fixed order, so the same seed produces the same field on any machine.