# Main Command: Go # Polygon Weaver by Guy Walker # www.logoarts.co.uk to new # set default screen, pen and turtle ResetAll SetScreenSize [400 400] HideTurtle SetSC Black SetPC Green SetPS 1 PenUp end to display :polya :polyb # write header title and footer values PenUp SetPC White SetH 0 SetPos [-190 182] Label "PolyWeaver SetPos [-190 -190] Label ( List "A\ B\ = :PolyA :PolyB ) SetPos [134 -190] Label ( List "Rep\ = :Rep ) end to init Make "Side 52 Make "PolyA Pick [3 4 5 6 7 8 9 10 11 12] Make "PolyB Pick [2 3 4 5 6 7 8] Make "Rep HCF :PolyA :PolyB Make "Rep (:PolyA/:Rep) * :PolyB end to hcf :i :j # return highest common factor of two integers LocalMake "Rem Modulo :I :J If :Rem = 0 [Output :J] [Output HCF :J :Rem] end to weave :polya :polyb :offset :draw Make "A 90 Make "B 90 Repeat :Rep [ SetH :A If :Draw [SetPC Green] Forward :Side SetH :B + :OffSet + :A If :Draw [SetPC Yellow] Forward :Side Make "A :A-(360/:PolyA) Make "B :B-(360/:PolyB) ] end to go New Animation Forever [ Wash Init Display :PolyA :PolyB SetPos List Minus :Side/2 Minus 60 PenDown For [OffSet 0 480 5] [ Weave :PolyA :PolyB :OffSet True Refresh Wait 3 SetPC Black Weave :PolyA :PolyB :OffSet False] Wait 60] end