Here's an example of how to draw a 2-D graph. First, get rid of the current graphics (since there may be graphics from the previous tutorial):
draw delete all
Define a function to graph, in this case, a parabola.
proc f {x} {
expr $x * $x
}
The following function draws a graph given the function name, the start and end values, and the step size.
proc draw_graph {function start end step} {
# do some error checking
if {$step < 0} {set step -$step}
if {$step == 0} {error "draw_graph: cannot have step size of zero"}
if {$start > $end} {
set tmp $start
set start $end
set end $tmp
}
# turn materials off
draw materials off
# draw the data in green
draw color green
# calculate and save the initial coordinates
set y0 [$function $start]
set x0 $start
set miny $y0
set maxy $y0
# go through the coordinates $start+$step to $end, $step at a time
for {set x1 [expr $start + $step]} {$x1 <= $end} {
set x1 [expr $x1 + $step]} {
# calculate the function value for this point
set y1 [$function $x1]
# and draw a line to connect the previous point to the current one
draw line "$x0 $y0 0" "$x1 $y1 0"
# save the min/max values of y, and copy the x1,y1 into x0,y0
if {$y1 < $miny} {set miny $y1}
if {$y1 > $maxy} {set maxy $y1}
set y0 $y1
set x0 $x1
}
# draw a red box around everything
draw color red
draw line "$start $miny 0" "$end $miny 0"
draw line "$start $miny 0" "$start $maxy 0"
draw line "$end $maxy 0" "$end $miny 0"
draw line "$end $maxy 0" "$start $maxy 0"
# and put some labels down
draw text "$end $miny 0" "x ->"
draw text "$start $maxy 0" "f(x)"
}
Copy these two definitions into VMD's text console (this script is
available from the VMD script library at
http://www.ks.uiuc.edu/Research/vmd/script_library/), then enter
draw_graph f -5 4 0.2and reset the view. Presto, a nice little parabola.