Seaweed

- waving shapes

The shapes are all the same, drawn by procedure tile 'Seaweed'. They appear to wave because of their alternating orientation and color. Using a move of 14.5 from the tile centre ensures the tile is positioned identically for each 90 degree orientation.

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 (Or :Col<3 :Col>9) [Stop]
  If (Mod (:Col+:Row) 6) <3 [SetH 0] [SetH 90]
  If (Mod (:Col+:Row) 2) =0 [SetPC DarkGreen] [SetPC White]
  SetX X+X/1.9     # spread columns
  Seaweed Fill Wait 3
End

To Seaweed
  # fixed size tile drawn from centre (tp)
  Back 14.5 Right 90 Back 14.5 PenDown
  Repeat 2 [
    Forward 14 Left 90 Forward 3 Right 90 Forward 12
    Left 90 Forward 12 Right 90 Forward 3 Left 90 Forward 14 Left 90]
    PenUp Forward 14.5 Left 90 Forward 14.5     # return to centre
End

To Go
  New SetSC [0 191 191]
  GridSq 11 30
End

Seaweed
Seaweed

Procedures blue
Variables pink
Comments green
Library gray