#!/usr/local/bin/wish # 30 Jan 1996 Brian Ward bri@blah.math.tu-graz.ac.at set w .c canvas $w -height 350 -width 250 scale $w.scale1 -resolution 1 -from 1 -to 100 -variable t -orient horiz \ -label delay -length 100 scale $w.scale2 -resolution 1 -from 1 -to 60 -variable dist -orient horiz \ -label extreme -length 100 scale $w.scale3 -resolution 1 -from 1 -to 7 -variable sp -orient horiz \ -label speed -length 100 button $w.b -text Stop -command "startstop $w.b $w" pack $w $w create window 10 200 -window $w.scale1 -anchor nw $w create window 140 200 -window $w.scale2 -anchor nw $w create window 10 270 -window $w.scale3 -anchor nw $w create window 140 300 -window $w.b -anchor nw # .scale1 .scale2 .scale3 set sign 1 set sp 1 set i 0 set t 17 set dist 35 set stop 0 proc update {w} { global sign sp i t dist stop if {$stop} { return } if {abs($i) > $dist && ($sign * $i) > 0} { set sign [expr $sign * -1] } incr i [expr $sign * $sp] $w delete segs $w create line 50 50 [expr 50 + $i] 20 -tags segs $w create line 200 50 [expr 200 - $i] 20 -tags segs $w create line 50 50 [expr 50 + $i] 80 -tags segs $w create line 200 50 [expr 200 - $i] 80 -tags segs $w create line 50 150 [expr 50 - $i] 120 -tags segs $w create line 200 150 [expr 200 + $i] 120 -tags segs $w create line 50 150 [expr 50 - $i] 180 -tags segs $w create line 200 150 [expr 200 + $i] 180 -tags segs after $t update $w } proc startstop {w ww} { # this is kind of childish global stop if {$stop} { set stop 0 $w config -text Stop update $ww } else { set stop 1 $w config -text Start } } $w create line 50 50 200 50 $w create line 50 150 200 150 update $w