Wave

- optical illusion

The image appears to ripple or wave. A pick of three random contrasting colors is used for the screen and clam shapes.

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
  If (:Row=1) [SetH :Col*30]
  Clam 0.8*:Side
 
SetPC :Hue Fill Right 30 Wait 2
End

To Clam :Size
  # optical clam shape drawn from centre (tp)
  SetPC White Back :Size/3 Arch 112 0.6*:Size
  Forward :Size/3 Left 180
  SetPC Black Back :Size/3 Arch 112 0.6*:Size
  Forward :Size/3 Left 180
End

To Arch :Angle :Radius
  # symmetrical arc drawn relative to turtle heading
  Arc :Radius Heading-:Angle/2 Heading+:Angle/2
End

To Go :Order
  New SetPW 3
  SetSC Pick [ [102 204 51] [51 204 102] [204 204 0] ]
  GlobalMake "Hue Pick [ [153 102 0] [128 0 255] [0 128 255] ]
  GridSq :Order 384/:Order
End

Or with squares. Copy and paste into XLogo the following two procedures. Rename 'TileSq'' as 'Tile'.

To TileSq :Col :Row :Side
  SetH 90*Int (:Col+:Row)/2
  Square 0.8*:Side
 
SetPC :Hue Fill Wait 2
End

To Square :Side
  # optical square drawn from centre (tp)
  Back :Side/2 Left 90 Back :Side/2 PenDown
  SetPC Black Forward :Side Right 90 Forward :Side Right 90
  SetPC White Forward :Side Right 90 Forward :Side Right 90
  PenUp Forward :Side/2 Right 90 Forward :Side/2
End

Wave
Wave Clam

 

Wave2
Wave Square

Procedures blue
Variables pink
Comments green
Library gray