Rubin vase ↔ faces
One unchanging image supports two figure-ground readings.
Janus Mosaics · Free Dual-Sided Images
This is the hook. Click the arrow to walk around the same 100 physical cubes: a perfect Space Invader on the front becomes a complete exact pattern on the back.
Showing front: Space Invader
The mosaic pixels are caption-free. The button swaps between two different embedded images, and the raw 30×30 sticker grids remain embedded for independent verification.
You saw two real faces of one physical object. Classic ambiguous images offer a useful comparison—but Janus Mosaics move the second image out of perception and onto the opposite stickers.
One unchanging image supports two figure-ground readings.
The same lines become two different animals when interpretation flips.
Unfold one Rubik’s Cube into a net and the constraint becomes visible: Janus specifies the 3×3 front and the opposite 3×3 back. The other four faces are not asked to form pictures.
The four side faces are not yet known. No target image has been assigned to them; their colors remain available, within Rubik’s Cube rules, to make the two chosen faces possible.
Every sticker is known and legal. The four side faces are solver output, not art-directed surfaces, so they may read as color noise rather than coherent pictures.
The oracle checks the complete 54-facelet cube. The exhibit promises an exact front and an exact reverse on the same 100 cubes—not four additional side mosaics.
This is cube R04C07 from the verified Space Invader ↔ Diamond Rings wall. The front and back are the two designed 3×3 patches; the other four faces are the actual legal colors selected by the compiler.
The cube is complete and legal. “Unknown” applies only before the solver runs; afterward all 54 stickers are fixed, but only the 18 front-and-back stickers were art-directed.
URFDLB facelet string is embedded below and marked independently verified. The renderer receives the same state remapped to UDFBLR.3D renderer: AnimCubeJS 3.5b by Josef Jelinek and Michael Feather, MIT licensed, pinned to source commit c130aa68. A first-party interactive CSS cube remains available if the library is blocked or offline.
The reveal earned the explanation. Hold the Space Invader front constant and change only what we demand from the reverse side.
The front survives unchanged. But a separately designed heart conflicts with 20 local cube pairings, so the heart blueprint must be edited before the wall becomes exactly buildable.
Showing front: Space Invader
You have already tried this construction at the top. Lock every front pixel, then compose the reverse from exact legal partners instead of forcing a second predetermined icon.
The solver does not invent random camouflage. It chooses exact reverse-side brush strokes from the legal freedom left by each fixed front block.
Each physical cube contributes one 3×3 front brush and one 3×3 back brush. Once the front is locked, every location still has a list of exact legal back partners.
Across the 70 two-color brush classes, 4,008 of 4,900 ordered front/back class pairs are exact under the most permissive opposite-ink relationship.
Checker, diagonal stripes, horizontal bands, vertical bands, and diamond rings all coexist with this exact Space Invader with zero target edits.
One sticker in every 3×3 face is a fixed center. The front and back centers are welded opposite colors, so the back inherits a mirrored 1-in-9 lattice from the front.
Every cube contributes one forced center pair. The exact constructions above keep every center pixel in the background field, so the lattice is present mechanically but invisible as damage.
The independent-heart challenge is therefore not paying a basic center tax. Its 20 edits come from genuine local front/back incompatibilities.
“Exact” means complete 54-facelet cube states were constructed and independently validated—not merely that a browser thought the color counts looked possible.
| Construction | Target edits | Full states | Physical result | Status |
|---|---|---|---|---|
| Space Invader ↔ Heart | 0 front + 20 back | 100 / 100 | 0 / 1,800 deviations from final blueprint | EXACT AFTER BLUEPRINT NEGOTIATION |
| Space Invader ↔ Checker Field | 0 front + 0 back | 100 / 100 | 0 / 1,800 deviations | EXACT FROM THE START |
| Space Invader ↔ Diagonal Stripes | 0 front + 0 back | 100 / 100 | 0 / 1,800 deviations | EXACT FROM THE START |
| Space Invader ↔ Horizontal Bands | 0 front + 0 back | 100 / 100 | 0 / 1,800 deviations | EXACT FROM THE START |
| Space Invader ↔ Vertical Bands | 0 front + 0 back | 100 / 100 | 0 / 1,800 deviations | EXACT FROM THE START |
| Space Invader ↔ Diamond Rings | 0 front + 0 back | 100 / 100 | 0 / 1,800 deviations | EXACT FROM THE START |