Wirth Curve

- plane filling curve

The Wirth curve on its own fills a triangle shape. It is drawn four times (with a single join) to fill a square plane.

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

To Init :Order
  Make "Side (3*Power 2 :Order) - 1     # centre curve
  Make "Size 380/:Side     # make Size a global value
End

To Wi :Order :Angle
  If :Order < 1 [Forward :Size Stop]     # ie if = 0
  Right :Angle
  Iw :Order Minus :Angle
  Left :Angle Forward :Size Left :Angle
  Iw :Order Minus :Angle
  Right :Angle
End

To Iw :Order :Angle
  Right :Angle
  Wi :Order-1 Minus :Angle
  Forward :Size/2 Left 2*:Angle Forward :Size/2
  Wi :Order-1 Minus :Angle
  Right :Angle
End

To Go :Order
  New Init :Order
  SetPos List Minus 190 (Minus 190)+:Size/2
  SetPC Yellow PenDown
  Repeat 4 [Wi :Order 45 Forward :Size/2 Right 90 Forward :Size/2]
  PenUp Home SetPC DarkBlue Pendown Fill     # comm out for no fills
End

Type Go order for example Go 3 to run.

For an animation of Wirth Curves of orders 0-5.

To GoX
  New Animation
  For [Order 0 5] [Wash     # comment out Wash for overlaid curves
    Init :Order
    SetPos List Minus 190 (Minus 190)+:Size/2
    SetPC Yellow PenDown
    Repeat 4 [Wi :Order 45 Forward :Size/2 Right 90 Forward :Size/2]
    PenUp Home SetPC DarkBlue Pendown Fill     # comm out for no fills
    Refresh Wait 80 PenUp Home]
End

Wirth Curve
Wirth Curve

Procedures blue
Variables pink
Comments green
Library gray