## set werte(raster) 1 set werte(dxhalbe) 40 set werte(dyhalbe) 30 proc neueDaten {} { set dx [expr rand()* 0.05 * $::werte(dxhalbe) ] set dy [expr rand()* 0.05 * $::werte(dyhalbe) ] for {set x 0} { $x < [expr 2* $::werte(dxhalbe) ]} {incr x $::werte(raster)} { for {set y 0} { $y < [expr 2* $::werte(dyhalbe)] } {incr y $::werte(raster)} { set r [expr pow( pow( $x-$::werte(dxhalbe),2) + pow($y-$::werte(dyhalbe), 2) ,.5)] set ::werte($x,$y) [expr cos(0.1*$r) ] } } } proc minMax {} { set min 1e6 set max -1e6 foreach k [array names ::werte] { if {[string match raster $k] || [string match dxhalbe $k] || [string match dyhalbe $k] } { continue } set wert $::werte($k) if { $wert < $min } { set min $wert } if { $wert > $max } { set max $wert } } return [list $min $max ] } proc wertZuFarbe { wert } { return "gray[expr round( ( $wert + 1 ) * 50 )]" } canvas .c -width 700 -height 700 -bg white pack .c proc zeichne {} { .c delete werte foreach {min max} [minMax] {} set raster $::werte(raster) set dxhalbe $::werte(dxhalbe) set dyhalbe $::werte(dyhalbe) set offsetX 50 set offsetY 50 set scale 8 set rasterHalbe [expr 0.5 * $raster ] set regexp 0 set draw 0 for {set x 0} { $x < [expr 2* $::werte(dxhalbe) ]} {incr x $::werte(raster)} { #set cx [expr $x + $offsetx ] for {set y 0} { $y < [expr 2* $::werte(dyhalbe)] } {incr y $::werte(raster)} { set wert $::werte($x,$y) .c create rectangle [expr $x - $rasterHalbe] \ [expr $y - $rasterHalbe] \ [expr $x + $rasterHalbe] \ [expr $y + $rasterHalbe] \ -fill [wertZuFarbe $wert] -tag werte -width 0 } } .c scale werte 0 0 $scale $scale .c move werte $offsetX $offsetY # Zone 1 .c create line -1 [expr $dyhalbe - 17 ] \ [expr 2* $dxhalbe] [expr $dyhalbe - 17 ] \ -tag linien -fill green .c create text $dxhalbe 8 -text "Zone 1" \ -tag linien -fill green # HV Linie .c create line [expr 0.6 * $dxhalbe ] $dyhalbe \ [expr 1.4 * $dxhalbe ] $dyhalbe \ -fill yellow -tag linien -width 3 .c create line [expr 0.6 * $dxhalbe ] [expr $dyhalbe -1] \ [expr 0.6 * $dxhalbe ] [expr $dyhalbe +1] -fill yellow -tag linien .c create text [expr 0.6 * $dxhalbe ] [expr $dyhalbe -1] \ -text "L1" -fill yellow -tag linien .c create text $dxhalbe [expr $dyhalbe -1] \ -text "HV" -fill yellow -tag linien .c create line [expr 1.4 * $dxhalbe ] [expr $dyhalbe -1] \ [expr 1.4 * $dxhalbe ] [expr $dyhalbe +1] -fill yellow -tag linien .c create text [expr 1.4 * $dxhalbe ] [expr $dyhalbe -1] \ -text "R1" -fill yellow -tag linien .c create line [expr $dxhalbe -1 ] [expr $dyhalbe + 6] \ [expr $dxhalbe +1 ] [expr $dyhalbe +6] -fill yellow -tag linien .c create line $dxhalbe $dyhalbe \ $dxhalbe [expr $dyhalbe + 20 ]\ -fill yellow -tag linien -width 3 .c create text [expr $dxhalbe + 2 ] [expr $dyhalbe +6] \ -text "2" -fill yellow -tag linien .c create text [expr $dxhalbe ] [expr $dyhalbe + 22 ] \ -text "3" -fill yellow -tag linien .c create line [expr 0.2 * $dxhalbe ] [expr $dyhalbe + 20] \ [expr 1.8 * $dxhalbe ] [expr $dyhalbe +20 ] \ -fill yellow -tag linien -width 3 .c create line [expr 0.6 * $dxhalbe ] [expr $dyhalbe +19 ] \ [expr 0.6 * $dxhalbe ] [expr $dyhalbe +21] -fill yellow -tag linien .c create text [expr 0.6 * $dxhalbe ] [expr $dyhalbe + 22 ] \ -text "L4" -fill yellow -tag linien .c create line [expr 1.4 * $dxhalbe ] [expr $dyhalbe +19 ] \ [expr 1.4 * $dxhalbe ] [expr $dyhalbe +21] -fill yellow -tag linien .c create text [expr 1.4 * $dxhalbe ] [expr $dyhalbe + 22 ] \ -text "R4" -fill yellow -tag linien .c create line [expr 0.2 * $dxhalbe ] [expr $dyhalbe +19 ] \ [expr 0.2 * $dxhalbe ] [expr $dyhalbe +21] -fill yellow -tag linien .c create text [expr 0.2 * $dxhalbe ] [expr $dyhalbe + 22 ] \ -text "L5" -fill yellow -tag linien .c create line [expr 1.8 * $dxhalbe ] [expr $dyhalbe +19 ] \ [expr 1.8 * $dxhalbe ] [expr $dyhalbe +21] -fill yellow -tag linien .c create text [expr 1.8 * $dxhalbe ] [expr $dyhalbe + 22 ] \ -text "R5" -fill yellow -tag linien .c scale linien 0 0 $scale $scale .c move linien $offsetX $offsetY } neueDaten minMax zeichne