Required additions/changes for 'Circular' and 'Track' animations: 1. In "animation-create.tcl": a. Add the following to the end of the file: ############################################################ } elseif {$CanvasName == "Circular"} { CreateCanvasInstance $CanvasNumber 1 Circular lappend ExistingCanvases(Circular) $CanvasNumber set CanvasTypeArray($CanvasNumber) Circular } elseif {$CanvasName == "Track"} { CreateCanvasInstance $CanvasNumber 1 Track lappend ExistingCanvases(Track) $CanvasNumber set CanvasTypeArray($CanvasNumber) Track } ############################################################ 2. In "canvas-parametes.tcl": a. Add new canvas names to the list of 'Canvases': ################################################################################### set Canvases {DemoRoad Generic_500x500 ShopFloor StraightRoad \ BasketballCourt SuperMerge BigCanvas CarmmaTrack SmartAHS Circular Track} ################################################################################### b. Add the following line to the end of the file: ########################################################### ## These are the parameters for the Circular ########################################################### set XDefault(Circular) "gxp" set YDefault(Circular) "gyp" set TypeDefault(Circular) "VREP" set MultiDefault(Circular) 1 set ImageDefault(Circular) "oval" set CanvasStructure(Circular,height) 600 set CanvasStructure(Circular,width) 600 set CanvasStructure(Circular,region) {0 0 1800 1800} set CanvasStructure(Circular,procedure) DrawCircular ########################################################### ## These are the parameters for the Track ########################################################### set XDefault(Track) "gxp" set YDefault(Track) "gyp" set TypeDefault(Track) "VREP" set MultiDefault(Track) 1 set ImageDefault(Track) "oval" set CanvasStructure(Track,height) 625 set CanvasStructure(Track,width) 625 set CanvasStructure(Track,region) {0 0 2500 2500} set CanvasStructure(Track,procedure) DrawTrack ########################################################### 3. In "canvases.tcl": a. Add the following procedures to the file: ############################## # # Cem's Circular test track # ############################## proc DrawCircular {w {zoom_index 1}} { set lw 4 set sl 200 $w create rectangle [expr $sl/$zoom_index] 0 [expr 3*$sl/$zoom_index] [expr $lw/$zoom_index]; $w create rectangle [expr $sl/$zoom_index] [expr $lw /$zoom_index] [expr 3*$sl/$zoom_index] [expr 2*$lw/$zoom_index]; $w create rectangle [expr $sl/$zoom_index] [expr 2*$lw/$zoom_index] [expr 3*$sl/$zoom_index] [expr 3*$lw/$zoom_index]; $w create rectangle [expr (4*$sl-3*$lw)/$zoom_index] [expr $sl/$zoom_index] [expr (4*$sl-2*$lw)/$zoom_index] [expr 3*$sl/$zoom_index]; $w create rectangle [expr (4*$sl-2*$lw)/$zoom_index] [expr $sl/$zoom_index] [expr (4*$sl-$lw)/$zoom_index] [expr 3*$sl/$zoom_index]; $w create rectangle [expr (4*$sl-$lw)/$zoom_index] [expr $sl/$zoom_index] [expr 4*$sl/$zoom_index] [expr 3*$sl/$zoom_index]; $w create rectangle [expr $sl/$zoom_index] [expr (4*$sl-3*$lw)/$zoom_index] [expr 3*$sl/$zoom_index] [expr (4*$sl-2*$lw)/$zoom_index]; $w create rectangle [expr $sl/$zoom_index] [expr (4*$sl-2*$lw)/$zoom_index] [expr 3*$sl/$zoom_index] [expr (4*$sl-$lw)/$zoom_index]; $w create rectangle [expr $sl/$zoom_index] [expr (4*$sl-$lw)/$zoom_index] [expr 3*$sl/$zoom_index] [expr 4*$sl/$zoom_index]; $w create rectangle 0 [expr $sl/$zoom_index] [expr $lw/$zoom_index] [expr 3*$sl/$zoom_index]; $w create rectangle [expr $lw/$zoom_index] [expr $sl/$zoom_index] [expr 2*$lw/$zoom_index] [expr 3*$sl/$zoom_index]; $w create rectangle [expr 2*$lw/$zoom_index] [expr $sl/$zoom_index] [expr 3*$lw/$zoom_index] [expr 3*$sl/$zoom_index]; set np 100 # upper right set rad [expr $sl-3*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr 3*$lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr 3*$lw+$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl-2*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr 2*$lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr 2*$lw+$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl-$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr $lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr $lw+$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr $rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr $rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } # lower right set rad [expr $sl-3*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr (4*$sl-3*$lw)-$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr (4*$sl-3*$lw)-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl-2*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr (4*$sl-2*$lw)-$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr (4*$sl-2*$lw)-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl-$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr (4*$sl-$lw)-$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr (4*$sl-$lw)-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr 4*$sl-$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr 4*$sl-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } # lower left set rad [expr $sl-3*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr 3*$lw+$rad*(1-cos(($i+1)*3.14150/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl-2*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 2*$lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr 2*$lw+$rad*(1-cos(($i+1)*3.14150/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl-$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr $lw+$rad*(1-cos(($i+1)*3.14150/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr $rad*(1-cos(($i+1)*3.14150/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } #upper left set rad [expr $sl-3*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$lw+$rad*(1-cos($i*3.14159/$np))] [expr $sl-$rad*sin($i*3.14159/$np)] [expr 3*$lw+$rad*(1-cos(($i+1)*3.14150/$np))] [expr $sl-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl-2*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 2*$lw+$rad*(1-cos($i*3.14159/$np))] [expr $sl-$rad*sin($i*3.14159/$np)] [expr 2*$lw+$rad*(1-cos(($i+1)*3.14150/$np))] [expr $sl-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl-$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $lw+$rad*(1-cos($i*3.14159/$np))] [expr $sl-$rad*sin($i*3.14159/$np)] [expr $lw+$rad*(1-cos(($i+1)*3.14150/$np))] [expr $sl-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $rad*(1-cos($i*3.14159/$np))] [expr $sl-$rad*sin($i*3.14159/$np)] [expr $rad*(1-cos(($i+1)*3.14150/$np))] [expr $sl-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } } ############################## # # Cem's Test Track # ############################## proc DrawTrack {w {zoom_index 1}} { set lw 4 set sl 150 # grid $w create rectangle 0 0 [expr $sl/2] [expr $sl/2] $w create rectangle [expr 0] [expr 0.5*$sl] [expr $sl/2] [expr $sl] $w create rectangle [expr 0] [expr $sl] [expr $sl/2] [expr 1.5*$sl] $w create rectangle [expr 0] [expr 1.5*$sl] [expr $sl/2] [expr 2*$sl] $w create rectangle [expr 0] [expr 2*$sl] [expr $sl/2] [expr 2.5*$sl] $w create rectangle [expr 0] [expr 2.5*$sl] [expr $sl/2] [expr 3*$sl] $w create rectangle [expr 0] [expr 3*$sl] [expr $sl/2] [expr 3.5*$sl] $w create rectangle [expr 0] [expr 3.5*$sl] [expr $sl/2] [expr 4*$sl] $w create rectangle [expr 0.5*$sl] [expr 3.5*$sl] [expr $sl] [expr 4*$sl] $w create rectangle [expr $sl] [expr 3.5*$sl] [expr 1.5*$sl] [expr 4*$sl] $w create rectangle [expr 1.5*$sl] [expr 3.5*$sl] [expr 2*$sl] [expr 4*$sl] $w create rectangle [expr 2*$sl] [expr 2*$sl] [expr 2.5*$sl] [expr 2.5*$sl] $w create rectangle [expr 1.5*$sl] [expr 2.5*$sl] [expr 2*$sl] [expr 3*$sl] $w create rectangle [expr 1.5*$sl] [expr 3*$sl] [expr 2*$sl] [expr 3.5*$sl] $w create rectangle [expr 2.5*$sl] [expr 2*$sl] [expr 3*$sl] [expr 2.5*$sl] $w create rectangle [expr 2*$sl] [expr 2.5*$sl] [expr 2.5*$sl] [expr 3*$sl] $w create rectangle [expr 2.5*$sl] [expr 1.5*$sl] [expr 3*$sl] [expr 2*$sl] $w create rectangle [expr 3*$sl] [expr 1.5*$sl] [expr 3.5*$sl] [expr 2*$sl] $w create rectangle [expr 3.5*$sl] [expr 1.5*$sl] [expr 4*$sl] [expr 2*$sl] $w create rectangle [expr 3.5*$sl] [expr 1.0*$sl] [expr 4*$sl] [expr 1.5*$sl] $w create rectangle [expr 3.5*$sl] [expr 0.5*$sl] [expr 4*$sl] [expr 1.0*$sl] $w create rectangle [expr 3.5*$sl] [expr 0.0*$sl] [expr 4*$sl] [expr 0.5*$sl] $w create rectangle [expr 3.5*$sl] 0 [expr 4.0*$sl] [expr 0.5*$sl] $w create rectangle [expr 3.0*$sl] 0 [expr 3.5*$sl] [expr 0.5*$sl] $w create rectangle [expr 2.5*$sl] 0 [expr 3.0*$sl] [expr 0.5*$sl] $w create rectangle [expr 2.0*$sl] 0 [expr 2.5*$sl] [expr 0.5*$sl] $w create rectangle [expr 1.5*$sl] 0 [expr 2.0*$sl] [expr 0.5*$sl] $w create rectangle [expr 1.0*$sl] 0 [expr 1.5*$sl] [expr 0.5*$sl] $w create rectangle [expr 0.5*$sl] 0 [expr 1.0*$sl] [expr 0.5*$sl] # straight lanes $w create rectangle 0 [expr $sl/$zoom_index] [expr $lw/$zoom_index] [expr 3*$sl/$zoom_index]; $w create rectangle [expr $lw/$zoom_index] [expr $sl/$zoom_index] [expr 2*$lw/$zoom_index] [expr 3*$sl/$zoom_index]; $w create rectangle [expr 2*$lw/$zoom_index] [expr $sl/$zoom_index] [expr 3*$lw/$zoom_index] [expr 3*$sl/$zoom_index]; $w create rectangle [expr $sl/$zoom_index] 0 [expr 3*$sl/$zoom_index] [expr $lw/$zoom_index]; $w create rectangle [expr $sl/$zoom_index] [expr $lw/$zoom_index] [expr 3*$sl/$zoom_index] [expr 2*$lw/$zoom_index]; $w create rectangle [expr $sl/$zoom_index] [expr 2*$lw/$zoom_index] [expr 3*$sl/$zoom_index] [expr 3*$lw/$zoom_index]; $w create rectangle [expr (2*$sl-3*$lw)/$zoom_index] [expr 3*$sl/$zoom_index] [expr (2*$sl-2*$lw)/$zoom_index] [expr (3*$sl-3*$lw)/$zoom_index]; $w create rectangle [expr (2*$sl-2*$lw)/$zoom_index] [expr 3*$sl/$zoom_index] [expr (2*$sl-$lw)/$zoom_index] [expr (3*$sl-3*$lw)/$zoom_index]; $w create rectangle [expr (2*$sl-$lw)/$zoom_index] [expr 3*$sl/$zoom_index] [expr 2*$sl/$zoom_index] [expr (3*$sl-3*$lw)/$zoom_index]; $w create rectangle [expr (3*$sl-3*$lw)/$zoom_index] [expr 2*$sl/$zoom_index] [expr 3*$sl/$zoom_index] [expr (2*$sl-$lw)/$zoom_index]; $w create rectangle [expr (3*$sl-3*$lw)/$zoom_index] [expr (2*$sl-$lw)/$zoom_index] [expr 3*$sl/$zoom_index] [expr (2*$sl-2*$lw)/$zoom_index]; $w create rectangle [expr (3*$sl-3*$lw)/$zoom_index] [expr (2*$sl-2*$lw)/$zoom_index] [expr 3*$sl/$zoom_index] [expr (2*$sl-3*$lw)/$zoom_index]; # curved lanes set np 50 #lower left set rad [expr $sl-3*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr 3*$lw+$rad*(1-cos(($i+1)*3.14150/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl-2*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 2*$lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr 2*$lw+$rad*(1-cos(($i+1)*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl-$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr $lw+$rad*(1-cos(($i+1)*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr $rad*(1-cos(($i+1)*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } #upper left set rad [expr $sl-3*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$lw+$rad*(1-cos($i*3.14159/$np))] [expr $sl-$rad*sin($i*3.14159/$np)] [expr 3*$lw+$rad*(1-cos(($i+1)*3.14150/$np))] [expr $sl-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl-2*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 2*$lw+$rad*(1-cos($i*3.14159/$np))] [expr $sl-$rad*sin($i*3.14159/$np)] [expr 2*$lw+$rad*(1-cos(($i+1)*3.14150/$np))] [expr $sl-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl-$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $lw+$rad*(1-cos($i*3.14159/$np))] [expr $sl-$rad*sin($i*3.14159/$np)] [expr $lw+$rad*(1-cos(($i+1)*3.14150/$np))] [expr $sl-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $rad*(1-cos($i*3.14159/$np))] [expr $sl-$rad*sin($i*3.14159/$np)] [expr $rad*(1-cos(($i+1)*3.14150/$np))] [expr $sl-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } # upper right set rad [expr $sl-3*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr 3*$lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr 3*$lw+$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl-2*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr 2*$lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr 2*$lw+$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl-$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr $lw+$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr $lw+$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr $rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr $rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } # lower right set rad [expr $sl-3*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $sl+$rad*sin($i*3.14159/$np)] [expr (4*$sl-3*$lw)-$rad*(1-cos($i*3.14159/$np))] [expr $sl+$rad*sin(($i+1)*3.14150/$np)] [expr (4*$sl-3*$lw)-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl-2*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $sl+$rad*sin($i*3.14159/$np)] [expr (4*$sl-2*$lw)-$rad*(1-cos($i*3.14159/$np))] [expr $sl+$rad*sin(($i+1)*3.14150/$np)] [expr (4*$sl-2*$lw)-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl-$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $sl+$rad*sin($i*3.14159/$np)] [expr (4*$sl-$lw)-$rad*(1-cos($i*3.14159/$np))] [expr $sl+$rad*sin(($i+1)*3.14150/$np)] [expr (4*$sl-$lw)-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr $sl+$rad*sin($i*3.14159/$np)] [expr 4*$sl-$rad*(1-cos($i*3.14159/$np))] [expr $sl+$rad*sin(($i+1)*3.14150/$np)] [expr 4*$sl-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } # upper right bottom set rad [expr $sl-3*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr (2*$sl-3*$lw)-$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr (2*$sl-3*$lw)-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl-2*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr (2*$sl-2*$lw)-$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr (2*$sl-2*$lw)-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl-$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr (2*$sl-$lw)-$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr (2*$sl-$lw)-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } set rad [expr $sl] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 3*$sl+$rad*sin($i*3.14159/$np)] [expr 2*$sl-$rad*(1-cos($i*3.14159/$np))] [expr 3*$sl+$rad*sin(($i+1)*3.14150/$np)] [expr 2*$sl-$rad*(1-cos(($i+1)*3.14159/$np))] -smooth 1 -tags Road } # middle set rad [expr $sl-3*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr 2*$sl+$rad*(1-cos($i*3.14159/$np))] [expr (3*$sl-3*$lw)-$rad*sin($i*3.14159/$np)] [expr 2*$sl+$rad*(1-cos(($i+1)*3.14150/$np))] [expr (3*$sl-3*$lw)-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl-2*$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr (2*$sl-$lw)+$rad*(1-cos($i*3.14159/$np))] [expr (3*$sl-3*$lw)-$rad*sin($i*3.14159/$np)] [expr (2*$sl-$lw)+$rad*(1-cos(($i+1)*3.14150/$np))] [expr (3*$sl-3*$lw)-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl-$lw] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr (2*$sl-2*$lw)+$rad*(1-cos($i*3.14159/$np))] [expr (3*$sl-3*$lw)-$rad*sin($i*3.14159/$np)] [expr (2*$sl-2*$lw)+$rad*(1-cos(($i+1)*3.14150/$np))] [expr (3*$sl-3*$lw)-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } set rad [expr $sl] for {set i 0} {$i < [expr $np/2]} {incr i} { $w create line [expr (2*$sl-3*$lw)+$rad*(1-cos($i*3.14159/$np))] [expr (3*$sl-3*$lw)-$rad*sin($i*3.14159/$np)] [expr (2*$sl-3*$lw)+$rad*(1-cos(($i+1)*3.14150/$np))] [expr (3*$sl-3*$lw)-$rad*sin(($i+1)*3.14159/$np)] -smooth 1 -tags Road } } #####################################