📄 coverage.tcl
字号:
######################################################### SaVi by Robert Thurman (thurman@geom.umn.edu) and# Patrick Worfolk (worfolk@alum.mit.edu).## Copyright (c) 1997 by The Geometry Center.# This file is part of SaVi. SaVi is free software;# you can redistribute it and/or modify it only under# the terms given in the file COPYRIGHT which you should# have received along with this file. SaVi may be# obtained from:# http://savi.sourceforge.net/# http://www.geom.uiuc.edu/locate/SaVi######################################################### coverage.tcl## $Id: coverage.tcl,v 1.51 2005/02/12 16:25:48 lloydwood Exp $# Note: IM_W and IM_H are linked to C variables for the image sizeproc coverage(build) {} { global FONT COLOR COLDIV COLDEC coverage_flag no_access_flag tracks_flag \ coverage_proj_flag coverage_angle_flag project_tracks_flag map_flag \ coverage_projection coverage_angle IM_W IM_H im_x_offset im_y_offset \ coverage_flag_dismissed tracks_flag_dismissed no_access_flag_dismissed \ coverage_display_center_longitude coverage_name use_X geomview_module if [winfo exists .coverage] { wm deiconify .coverage raise .coverage return } set coverage_name [build_Toplevel coverage] wm protocol $coverage_name WM_DELETE_WINDOW coverage(dismiss) coverage(title) build_Menubar $coverage_name mbar \ {"Help" \ {"about SaVi..." "about(build)"} } \ {"File" \ {"Load satellites..." "load(build)"} \ {"Save satellites as Tcl script..." "save(build)"} \ {} \ {"Save map..." "coverage(save_map)"} \ {} \ {"Load color shades..." "coverage(load_colors)"} \ {"Save color shades..." "coverage(save_colors)"} \ {} \ {"Close" "coverage(dismiss)"} } \ {"Shading" \ {"Change shading" "coverage(run_of_colors)"} \ {} \ {"Select random colors" "coverage(random_colors)"} \ {"Shade between end colors" "coverage(blend_colors)"} \ {} \ {"SaVi color shades" "coverage(restore_colors)"} } \ {"Views" \ {"Satellite list..." "window(raise) main"} \ {} \ {"> Step forwards" "main(forw_step)"} \ {"< Step back" "main(back_step)"} \ {">> Forwards..." "main(forwards)"} \ {"<< Reverse..." "main(backwards)"} \ {"Freeze views" "main(stop)"} \ {} \ {"Refresh coverage view" "coverage(foot)"} \ {} \ {"Restart views at time zero" "main(restart)"} } \ {"Constellations"} \ {"Rastering"} \ {"Rendering"} main(constellations_menu) $coverage_name.mbar.b3 build_options_menu $coverage_name.mbar.b4 \ {"Show Earth map" map_flag} \ {} \ {"Show coverage" coverage_flag} \ {"Add interval decay" no_access_flag} \ {} \ {"Show satellites" tracks_flag} \ {"Record ground tracks" project_tracks_flag} if {$geomview_module == 1} { build_options_menu $coverage_name.mbar.b5 \ {"Real-time mode" realtime_flag} \ {} \ {"Show central body" earth_flag} \ {"Use detailed Earth model" fancy_earth_flag} \ {} \ {"Texturemapping" texture_flag} \ {"Send cylindrical map to Geomview" geomview_dynamic_texture_flag} } else { build_options_menu $coverage_name.mbar.b5 \ {"Real-time mode" realtime_flag} } set cmd [build_CmdFrame $coverage_name cmd] set c "$cmd.c" # canvas counts from 0 canvas $c -bg $COLOR(bg) -width $IM_W -height $IM_H pack $c -fill x -side top if {$coverage_display_center_longitude < 0} { set offset_longitude [expr $coverage_display_center_longitude + 360] } else { set offset_longitude $coverage_display_center_longitude } set im_x_offset [expr 2 + ($offset_longitude * -$IM_W/360)] set im_y_offset 2 set im [image create photo im_coverage -width [expr $IM_W*2] -height $IM_H] $c create image [expr $IM_W + $im_x_offset] [expr $IM_H/2 + $im_y_offset] \ -image $im # catch button click in map to get fisheye Lat/Long bind $c <Button-1> {coverage(lat_long) %x %y} set cmdq [build_StdFrame $cmd q] build_Optionslist $cmdq olist \ {"Show Earth map" map_flag} pack $cmdq.olist -side left build_IPopupMenu $cmdq p0 "projected as:" \ coverage_projection coverage(map) {"cylindrical" "unprojected" "sinusoidal"} pack $cmdq.p0 -side left build_LabelEntryColumns $cmdq p1 \ {text "" {"Last loaded:"}} \ {label "" {last_filename}} pack $cmdq.p1 -side left pack $cmdq -anchor w set cmda [build_StdFrame $cmd a] build_Optionslist $cmda olist \ {"Show coverage" coverage_flag} \ {"Add interval decay" no_access_flag} \ {"Show satellites" tracks_flag}# this will give a numerical idea of coverage by latitude# {"Print access data" print_access_flag}# this is hacked into utils.tcl instead.# {"Record ground tracks and project forwards" project_tracks_flag} pack $cmda.olist -side left coverage(init_colors) build_StdFrame $cmda ce # the background colors should match the colors in coverage_vis.c build_StdFrame $cmda.ce cf label $cmda.ce.cf.0 -text "diversity of coverage now:" \ -font $FONT(label) button $cmda.ce.cf.1 -text "1" -font $FONT(fixed) -bg $COLDIV(1) \ -activebackground $COLDIV(1) -command "coverage(diversitycolor) 1" \ -relief groove button $cmda.ce.cf.2 -text "2" -font $FONT(fixed) -bg $COLDIV(2) \ -activebackground $COLDIV(2) -command "coverage(diversitycolor) 2" \ -relief groove button $cmda.ce.cf.3 -text "3" -font $FONT(fixed) -bg $COLDIV(3) \ -activebackground $COLDIV(3) -command "coverage(diversitycolor) 3" \ -relief groove button $cmda.ce.cf.4 -text "4+" -font $FONT(fixed) -bg $COLDIV(4) \ -activebackground $COLDIV(4) -command "coverage(diversitycolor) 4" \ -relief groove label $cmda.ce.cf.5 -text "satellites" -font $FONT(label) pack $cmda.ce.cf.0 $cmda.ce.cf.1 $cmda.ce.cf.2 $cmda.ce.cf.3 $cmda.ce.cf.4 \ $cmda.ce.cf.5 -expand 1 -fill x -side left -ipadx 2m -ipady 2m \ -padx 1m -pady 1m pack $cmda.ce.cf -side top build_StdFrame $cmda.ce cg label $cmda.ce.cg.0 -text "age of decayed coverage:" -font $FONT(label) button $cmda.ce.cg.1 -text "1" -font $FONT(fixed) -bg $COLDEC(1) \ -activebackground $COLDEC(1) -command "coverage(decaycolor) 1" \ -relief groove button $cmda.ce.cg.2 -text "2" -font $FONT(fixed) -bg $COLDEC(2) \ -activebackground $COLDEC(2) -command "coverage(decaycolor) 2" \ -relief groove button $cmda.ce.cg.3 -text "3" -font $FONT(fixed) -bg $COLDEC(3) \ -activebackground $COLDEC(3) -command "coverage(decaycolor) 3" \ -relief groove button $cmda.ce.cg.4 -text "4+" -font $FONT(fixed) -bg $COLDEC(4) \ -activebackground $COLDEC(4) -command "coverage(decaycolor) 4" \ -relief groove label $cmda.ce.cg.5 -text "intervals" -font $FONT(label) pack $cmda.ce.cg.0 $cmda.ce.cg.1 $cmda.ce.cg.2 $cmda.ce.cg.3 $cmda.ce.cg.4 \ $cmda.ce.cg.5 -expand 1 -fill x -side left -ipadx 2m -ipady 2m \ -padx 1m -pady 1m pack $cmda.ce.cg -side top pack $cmda.ce -side right -fill both pack $cmda -fill both build_LabelEntryColumns $cmd le2 \ {lcheckbox "" project_tracks_flag} \ {ientry "" {tracks_interval}} \ {text "" {hours}} build_IPopupMenu $cmd p2 "Coverage angle describes:" \ coverage_angle_flag coverage(foot) {"ground terminal mask elevation" "cones from satellites"} pack $cmd.p2 -fill both -expand 1 set cmdb [build_StdFrame $cmd b] button $cmdb.b1 -font $FONT(button) $cmdb.b1 configure -text "Set angle:" \ -command "coverage(foot)" pack $cmdb.b1 -side left build_LabelEntryColumns $cmdb le1 \ {dentry "" {coverage_angle}} \ {label "" {coverage}} \ {label "" {mean_coverage}} pack $cmdb.le1 pack $cmdb -fill both -expand 1 set cmdd [build_StdFrame $cmd d] build_LabelEntryColumns $cmdd le0 \ {label "" {coverage_init_time}} \ {label "" {coverage_time}} \ {text "" "Time:"} \ {label "" {time}} pack $cmdd.le0 -side left pack $cmdd -fill both -expand 1 pack $cmd -fill both -side top -expand 1 build_Buttonbar $coverage_name bb1 \ {"Restart" coverage(restart)} \ {" < " coverage(back_step)} \ {" > " coverage(forw_step)} \ {" STOP " coverage(stop)} \ {" < < " coverage(backwards)} \ {" > > " coverage(forwards)} set coverage_flag $coverage_flag_dismissed set tracks_flag $tracks_flag_dismissed coverage(update)}proc coverage(forw_step) {} { main(forw_step)}proc coverage(back_step) {} { main(back_step)}proc coverage(forwards) {} { global COLOR playbar if {([winfo exists .coverage])} { .coverage.bb1.b3 configure -bg $COLOR(bg) .coverage.bb1.b4 configure -bg $COLOR(bg) .coverage.bb1.b5 configure -bg $COLOR(sbg) } set flag $playbar set playbar 1 if {$flag == 0} { main(forwards) } set playbar 0}proc coverage(backwards) {} { global COLOR playbar if {([winfo exists .coverage])} { .coverage.bb1.b3 configure -bg $COLOR(bg) .coverage.bb1.b4 configure -bg $COLOR(sbg) .coverage.bb1.b5 configure -bg $COLOR(bg) } set flag $playbar set playbar 1 if {$flag == 0} { main(backwards) } set playbar 0}proc coverage(stop) {} { global COLOR playbar if {([winfo exists .coverage])} { .coverage.bb1.b3 configure -bg $COLOR(sbg) .coverage.bb1.b4 configure -bg $COLOR(bg) .coverage.bb1.b5 configure -bg $COLOR(bg) } set flag $playbar set playbar 1 if {$flag == 0} { main(stop) } set playbar 0}proc coverage(restart) {} { coverage(stop) satellites RESET}proc coverage(init_colors) {} { global COLDIV COLDEC NUMCOLORS global DIV0 DIV1 DIV2 DIV3 DIV4 global DEC0 DEC1 DEC2 DEC3 DEC4 set NUMCOLORS 4 # set diversity colors to shades of yellow # strings set COLDIV(0) #ffffff set COLDIV(1) #ffff00 set COLDIV(2) #ffaa00 set COLDIV(3) #ff5500 set COLDIV(4) #ff0000 # ints set DIV0 [expr 0xffffff] set DIV1 [expr 0xffff00] set DIV2 [expr 0xffaa00] set DIV3 [expr 0xff5500] set DIV4 [expr 0xff0000] # set decay colors to shades of blue #strings set COLDEC(0) #ffffff set COLDEC(1) #0000ff set COLDEC(2) #0000d9 set COLDEC(3) #0000b4 set COLDEC(4) #00008f #ints set DEC0 [expr 0xffffff] set DEC1 [expr 0x0000ff] set DEC2 [expr 0x0000d9] set DEC3 [expr 0x0000b4] set DEC4 [expr 0x00008f]}proc coverage(update_colors) {} {global DIV1 DIV2 DIV3 DIV4 DEC1 DEC2 DEC3 DEC4 COLDIV COLDEC for {set i 1} {$i < 5} {incr i} { set name DIV$i set COLDIV($i) [eval format "#%06x" $$name] .coverage.cmd.a.ce.cf.$i configure -bg $COLDIV($i) \ -activebackground $COLDIV($i) set name DEC$i set COLDEC($i) [eval format "#%06x" $$name] .coverage.cmd.a.ce.cg.$i configure -bg $COLDEC($i) \ -activebackground $COLDEC($i) } satellites COLOR_UPDATE coverage(update)}proc coverage(random_colors) {} { global DIV1 DIV2 DIV3 DIV4 DEC1 DEC2 DEC3 DEC4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -