RAYMOSAICAN OPTICAL PLAYGROUND · 001
LIVE SIMULATION / 448 MIRRORS
LIGHT, REARRANGED

Draw with light.

Hundreds of tiny mirrors. One source of light.
One surprisingly personal piece of physics.

01 / CREATE OPTICS ACTIVE
A short name projects at once. Long messages become real reflections in sequence. Emoji appearance depends on local fonts.0 / 400
Type a name → Create → Share GIF. Nothing gets uploaded.
02 / EXPLORE
Every mirror is calculated independently.
LIGHT POSITION−4.7 / 6.8 / 3.8
Drag the scene to orbit. Scroll to zoom. Click a mirror to inspect it.
03 / PROJECT
SAVE A LITTLE LIGHT

Make it yours.

Export real rendered frames as a looping animated GIF. Works without uploading a thing.

The complete mirror instrument, light source and projection wall.

GIF is supported everywhere, but apps differ in how they display or forward animation.
LET THE LIGHT TRAVEL

Share RAYMOSAIC ❤️

Share the public light laboratory — not your private drawing or project.

An external sharing service opens only when you select it. The public link never contains your drawing.
THE PHYSICS OF A LITTLE LIGHT

How it works 🔬

448, 666 or 1337 individual mirrors, one light source and the law of reflection.

A light ray reflecting off one mirror and reaching a wallOne incident ray travels from a point light to a flat mirror. The mirror normal bisects the incoming and outgoing directions. A reflected ray reaches the projection wall.LIGHTMIRRORNORMALWALL
  1. 01 — One light source

    One point source illuminates the array of independently aimed mirrors.

  2. 02 — Mirror orientation

    Each facet gets a calculated surface normal, not a painted pixel.

  3. 03 — The reflection law

    The incoming and outgoing rays have equal angles to the surface normal: r = i − 2(i · n)n.

  4. 04 — The projection

    The rays intersect the wall, building a motif from individual spots.

  5. 05 — A new message

    Each message scene recalculates all mirror normals, then animates their physical reorientation.

  6. 06 — Export and sharing

    The browser turns those calculated projections into GIF frames locally, with no upload.