Background

This specific illusion was designed by Akiyoshi Kitaoka, an experimental psychologist who studies visual illusions as well as makes illusion artworks:
◼
  • https://x.com/AkiyoshiKitaoka/status/2017446775284764788
  • ◼
  • https://x.com/AkiyoshiKitaoka
  • Tiny rainbows in eyes trick brain to see 3D. Does 🟥 bulge up and 🟦 sink down? Close 1 eye. Dots are fully random - no special design here has information for the brain to interpret the protrusion of red and blue differently. This is why chromostereopsis is an optical illusion.
    Light rays bend (refract) differently for different colors, passing through eye’s lens as they do passing through water droplets in the rainbow. What causes rainbows to appear colorful also triggers this 3D illusion in our brain. Blue and red rays land at different spots on eye retina and trick our brain in spatial depth interpretation. The illusion is fundamentally binocular - close one eye and it weakens. You can test the strength of the illusion by slowly closing and opening one eye.
    Contrasting red-blue eyespots on butterfly wings perhaps were evolutionary features effective to confuse and scare off the predators. Known mentions of the effect go as far as Goethe. Artists used it quite early (already around Renaissance) to induce depth perception, for example in stained-glass.

    Minimal few-liner

    Vertical:

    In[]:=
    ListPlot[SeedRandom[1];RandomReal[1,{10^4,2}],​​AspectRatio->1,Axes->False,Background->Black,​​PlotRangePadding->.05,PlotStyle->PointSize[.007],​​ImageSize->550,ColorFunction->Function[{x,y},​​Blend[Riffle[Table[Red,4],Blue],Mod[x,1]]]]
    Out[]=

    Horizontal:

    In[]:=
    ListPlot[SeedRandom[1];RandomReal[1,{10^4,2}],​​AspectRatio->1,Axes->False,Background->Black,​​PlotRangePadding->.05,PlotStyle->PointSize[.007],​​ImageSize->550,ColorFunction->Function[{x,y},​​Blend[Riffle[Table[Red,4],Blue],Mod[y,1]]]]
    Out[]=

    Interactive app

    Manipulate​​ListPlotpts,
    ,​​{s,0,1/waves},​​SaveDefinitions->True,​​Initialization{​​waves=3,​​SeedRandom[1];​​pts=RandomReal[1,{10^4,2}]​​}
    Out[]=
    ​
    s

    GiF generation

    waves=3;​​pts=(SeedRandom[1];RandomReal[1,{10^4,2}]);​​title=Framed[Column[{​​Style["CHROMOSTEREOPSIS",40,GrayLevel[.9],FontFamily->"Copperplate"],​​Style["3D depth illusion in 2D red–blue images",25,GrayLevel[.9],FontFamily->"Verdana"]​​},Alignment->Center],FrameStyle->Black,FrameMargins10];​​frames=Table​​ListPlotpts,
    ,​​{s,0,1/waves,1/waves/50}​​;
    In[]:=
    SetDirectory[NotebookDirectory[]]
    Out[]=
    /Users/vitaliyk/Desktop
    In[]:=
    Export["wavechro2.gif",frames,ImageSize->550,"DisplayDurations"->.03]
    Out[]=
    wavechro2.gif

    CITE THIS NOTEBOOK

    Moving blue red chromostereopsis stripes by Akiyoshi Kitaoka​
    by Vitaliy Kaurov​
    Wolfram Community, STAFF PICKS, February 3, 2026
    ​https://community.wolfram.com/groups/-/m/t/3632646