Peano Gosper Curve

- XLogo

This plane filling curve fills a hexagonal plane area It requires both a left and a right handed form.

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

To Init
  # make Size and Scale global values
  GlobalMake "Size 330
  GlobalMake "Scale Power 7 0.5
  PenUp SetPos [-165 94] SetH 90 PenDown
End

To Display :Order
  # write header title, curve depth and info
  SetPC White
  SetPos [-190 180] Label [Peano Gosper Curve]
  SetPos [126 180] Label List "Order: :Order
End

To PGR :Order :Size
  If :Order <1 [Forward :Size Wait Int :Size/8 Stop]
  Right 60 PGL :Order-1 :Size/:Scale
  Left 60 PGR :Order-1 :Size/:Scale
  PGR :Order-1 :Size/:Scale
  Left 120 PGR :Order-1 :Size/:Scale
  Left 60 PGL :Order-1 :Size/:Scale
  Right 120 PGL :Order-1 :Size/:Scale
  Right 60 PGR :Order-1 :Size/:Scale
End

To PGL :Order :Size
  If :Order <1 [Forward :Size Wait Int :Size/8 Stop]
  PGL :Order-1 :Size/:Scale
  Left 60 PGR :Order-1 :Size/:Scale
  Left 120 PGR :Order-1 :Size/:Scale
  Right 60 PGL :Order-1 :Size/:Scale
  Right 120 PGL :Order-1 :Size/:Scale
  PGL :Order-1 :Size/:Scale
  Right 60 PGR :Order-1 :Size/:Scale
  Left 60
End

To Go :Order
  New Display :Order Init
  SetPC Green Right 19.1*:Order
  PGR :Order :Size
End

To GoX
  New Display "1-4 Init
  For [Order 1 4] [
    Right 19.1*:Order
    SetPC Item :Order [1 3 5 6] SetPW 5-:Order
    PGR :Order :Size
    PenUp Left 19.1*:Order Back :Size PenDown Wait 60]
End

For a particular curve, type Go order for example Go 3 to run.

Peano Gosper
Peano Gosper

Procedures blue
Variables pink
Comments green
Library gray