# Main Command: Go # Linkages 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 init Make "Title [Chebyshev's Linkage] Make "FixedP [0 -115] Make "CrankP [115 -115] Make "A 140 Make "B 140 Make "Points [ ] Repeat 80 [Make "Points LPut [0 0] :Points] end to title SetPC White SetPW 3 Repeat 80 [ Dot Item RepCount :Points] SetPos [-190 178] SetH 0 Label :Title end to distancebetween :pos1 :pos2 # return distance between two points Make "Hor (First :Pos1) - (First :Pos2) Make "Ver (Last :Pos1) - (Last :Pos2) Output SquareRoot ( (Power :Hor 2) + (Power :Ver 2) ) end to marks1 SetPC [64 64 64] SetPW 1 SetPos :FixedP Arc 140 350 57 PenDown Forward 200 Back 200 SetPos :CrankP Circle 60 PenUp SetPC [0 0 200] SetPW 21 Dot :FixedP Dot :CrankP end to marks3 SetPC [64 64 64] SetPW 7 Dot :FixedP Dot :PC Dot :PP Dot Last :Points end to drawcrank SetH Towards MousePos Forward 60 SetPC Red SetPW 3 Circle 11 Back 60 PenDown SetPC [0 160 0] SetPW 11 Forward 60 Make "PC Pos SetPC [64 64 64] SetPW 7 Dot :CrankP end to cheb Make "Dist DistanceBetween Pos :FixedP Make "aa ((Power :Dist 2)+(Power :A 2)-(Power :B 2))/(2*:Dist) SetH Towards :FixedP Right ArcCosine :aa/:A SetPC Green SetPW 11 Forward 2*:A PenUp Make "Points ButFirst LPut Pos :Points Back :A Make "PP Pos SetPC [0 160 0] PenDown SetPos :FixedP PenUp end to go New Animation Init Forever [ If 95>DistanceBetween MousePos :CrankP [ Title Marks1 DrawCrank Cheb Marks3 Refresh Wash] ] end