Skip to content

Math used to create a mirror array that reflects light into a coherent image.

Notifications You must be signed in to change notification settings

peterdsharpe/mirror-array

Repository files navigation

Mirror Array

A fun project to 3D print a mirror array that, when held in the sunlight, projects a cute message onto the ground via its reflection.

Check out the final mirror geometry here. See here for the main design code.

Concept inspired by a similar project by @bencbartlett, but all code in this repository is written from scratch.

The mirror consists of 294 individual triangular mirrors (roughly 1" side length) arranged into a hexagon. Each is held at a very precise, slightly-different angle, which results in a triangular spot of light projected onto the ground. The spots of light combine to form a message.


The true challenge of this project isn't in computing any individual mirror orientation, or even in manufacturing the whole thing. Instead, the tricky part is determining which individual mirror should be matched to each individual spot on the the ground (the light-ray "targets").

The reason that this matters is that a poorly-matched mapping of mirrors to targets will result in a blurry, unreadable message if the focal plane distance or orientation is even slightly off. Ideally, adjacent light rays should be as close to perfectly collimated as possible.

This means that the mirror-target matching problem is a combinatorial optimization problem with $294!$, or $\approx 10^{600}$ possible solutions, an incomprehensibly-huge search space. To solve this, we run a simulated annealing algorithm to find a good-enough solution in a reasonable amount of time - but even this takes a supercomputer.

mirror1

mirror2

About

Math used to create a mirror array that reflects light into a coherent image.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages