Zollner Illusion

- tiled grid

The horizontal lines are parallel but appear tilted. This apparently simple illusion was invented by Johann Zollner in 1860.

To New
  # set default screen, pen and turtle values
  ResetAll SetScreenSize [400 400] HideTurtle
  SetSC Black SetPC Green SetPS 1 PenUp
End

To GridSq :Order :Side
  # draw tile at each column x row position
  LocalMake "Offset (1+:Order)/2
  For (List "Col 1 :Order) [
    For (List "Row 1 :Order) [
      SetXY :Side*(:Col-:Offset) :Side*(:Row-:Offset)
      Tile :Col :Row :Side] ]
End

To Tile :Col :Row :Side
  SetH 90+180 *(Mod :Row 2)-90*(Mod :Col 2)
  Back :Side/2 Right 90 Back :Side/2
  PenDown Repeat 4 [Forward :Side Left 90]
  ForEach "P [1 -1] [
    Repeat 2 [
      Left :P*22.5 Forward 0.46*:Side Back 0.46*:Side
      Right :P*22.5 Forward 0.4*:Side
      Left :P*22.5 Forward 0.46*:Side Back 0.46*:Side
      Right :P*22.5 Forward 0.6*:Side Left :P*90]
    Right :P*90 Back :Side Right :P*90 Back :Side Left :P*90] PenUp
End

To Go :Order
  New
  GridSq :Order 384/:Order
End

Zollner
Zollner

Procedures blue
Variables pink
Comments green
Library gray