Note that QR codes cannot be read in mirror image, so only
3 of the 6 possible cube orientations cast a readable
shadow.
Well, now I can't stop thinking about QR code rotations. How big is the subset of QR codes that are valid in more than one orientation? (some combination of rotated, flipped, or mirrored). Treating the marks for position/alignment/etc as a separate layer and flip/rotate/mirror the rest of the code.
What about the different sizes of code? Can it only be done with, say Version 4 and not Version 3 codes?
>How big is the subset of QR codes that are valid in more than one orientation?
Given the placement of the position and alignment markers in a valid QR code it looks like the only symmetry it can have is reflection (mirror-image) symmetry about its main diagonal (the line from the top-left to the bottom-right) [1]. If you take any given QR code and replace the part of it that is below the main diagonal with a mirror image of the part above it then in the worst case you will lose 50% of the information contained in the code (actually less since the pixels on the diagonal stay there no matter what). Now, the content of a QR code generated with the heaviest error correction settings can be recovered even if up 30% of its data is lost [2]. If you generate a QR code where the part above the main diagonal is similar enough to the one below it (meaning at least 50% - 30% = 20% of symmetrically located pixels are the same color) then such a QR code should survive being made fully symmetrical.
The above is a simplification, though, since, generally speaking, error correction in QR codes operates on blocks and not whole codes. In practice it also may or may not be possible to generate a sufficiently symmetrical code in the first place, let alone one with the specific content you want.
[1] See http://imgur.com/YMNIsgc. The red line show the diagonal, the green arrows point out pairs of symmetrical pixels.
What about the different sizes of code? Can it only be done with, say Version 4 and not Version 3 codes?