Hiding Images in Plain Sight: The Physics of Magic Windows
mattferraro.dev
mattferraro.dev
> The required tools are so simple that ancient peoples could have drawn these images in hardened sooty resin pools with wooden tools, had they but known the trick.
This could be used as a great art project, even young kids could do
If you cast and polish a bronze mirror with raised letters/shapes on the back, the very slight deformations caused by polishing over the different thicknesses will create an image in the reflected caustics, despite the fact that the mirror appears smooth when using it as a mirror.
I understand Step 1, growing and shrinking the cells such that the area of the cell on the window is proportional to the brightness of the corresponding cell on the image plane. Intuitively this feels like the cells on the window represent the total light budget, and growing a cell means taking a larger proportion of the incoming light to aim towards a given point.
But I'm stuck at Step 2. If a window cell has a single normal, i.e. if it's a flat plane, I don't see how it would increase the brightness. Like the author previously describes, the brightness is dependent on the second derivative of the height, not the first. A larger flat window cell will not make for a brighter image cell, it'll simply make the image cell larger. Brightness could be increased by having more window cells aimed at the same point, not larger cells.
The way I understand this could work is if the second step of converting the window cells into normals is done at a much higher resolution than the given map, and the target point is fixed for each cell. That way, the normal could vary over the course of a window cell, and every cell would function as a tiny lens, where now bigger lenses would in fact lead to brighter spots.
I assume I'm missing something, can anyone tell me where I go wrong?
It's probably a good enough approximation to at least generate a recognizeable image. Especially if you use a point source because then each 'window' will reflect all its light in more or less the right direction which will converge on a single point as well. Not sure if they'll all focus on the same plane but it's probably close enough.
As is I just gloss over that completely and I don't address it. So tiny, lone, bright pixels end up more smeared than I'd like.
Using the change of variables formula this basically means that we want h(f^(-1)(x,y)) |det Df| to be constant. Which is quite easy in 1D (it's just the inverse cumulative density function), but significantly trickier in 2D.
In 2D the problems seems to be underdetermined. One solution would be to first solve the horizontal problem for each row and then solve the vertical part for the total densities of each row. Or the other way around. There might be a way to make this optimal in some sense, but I'm not quite sure what to optimize for.
For the past 2 blog posts, see: https://news.ycombinator.com/from?site=mattferraro.dev