diff options
Diffstat (limited to 'Examples/GIFPlot/Tcl/full')
| -rw-r--r-- | Examples/GIFPlot/Tcl/full/Makefile | 24 | ||||
| -rw-r--r-- | Examples/GIFPlot/Tcl/full/README | 8 | ||||
| -rw-r--r-- | Examples/GIFPlot/Tcl/full/cmap | bin | 0 -> 768 bytes | |||
| -rw-r--r-- | Examples/GIFPlot/Tcl/full/gifplot.i | 15 | ||||
| -rw-r--r-- | Examples/GIFPlot/Tcl/full/runme.tcl | 67 |
5 files changed, 114 insertions, 0 deletions
diff --git a/Examples/GIFPlot/Tcl/full/Makefile b/Examples/GIFPlot/Tcl/full/Makefile new file mode 100644 index 0000000..0c016e3 --- /dev/null +++ b/Examples/GIFPlot/Tcl/full/Makefile @@ -0,0 +1,24 @@ +TOP = ../../.. +SWIG = $(TOP)/../swig +SWIGOPT = -I../../Include +SRCS = +TARGET = gifplot +INTERFACE = gifplot.i +LIBS = -L../.. -lgifplot +INCLUDES = -I../../Include + +all:: + $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \ + INCLUDES='$(INCLUDES)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \ + TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' tcl + +static:: + $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \ + INCLUDES='$(INCLUDES)' LIBS='$(LIBS)' SWIGOPT='$(SWIGOPT)' \ + TARGET='mytclsh' INTERFACE='$(INTERFACE)' tclsh + +clean:: + $(MAKE) -f $(TOP)/Makefile tcl_clean + rm -f *.gif + +check: all diff --git a/Examples/GIFPlot/Tcl/full/README b/Examples/GIFPlot/Tcl/full/README new file mode 100644 index 0000000..bdba4e8 --- /dev/null +++ b/Examples/GIFPlot/Tcl/full/README @@ -0,0 +1,8 @@ +This example runs the entire gifplot.h header file through SWIG without +any changes. The script 'runme.tcl' does something a little more +interesting. You'll have to go look at the header file to get a complete +listing of the functions. + + + + diff --git a/Examples/GIFPlot/Tcl/full/cmap b/Examples/GIFPlot/Tcl/full/cmap Binary files differnew file mode 100644 index 0000000..a20c331 --- /dev/null +++ b/Examples/GIFPlot/Tcl/full/cmap diff --git a/Examples/GIFPlot/Tcl/full/gifplot.i b/Examples/GIFPlot/Tcl/full/gifplot.i new file mode 100644 index 0000000..5a7f500 --- /dev/null +++ b/Examples/GIFPlot/Tcl/full/gifplot.i @@ -0,0 +1,15 @@ +/* Oh what the heck, let's just grab the whole darn header file + and see what happens. */ + +%module gifplot +%{ + +/* Note: You still need this part because the %include directive + merely causes SWIG to interpret the contents of a file. It doesn't + include the right include headers for the resulting C code */ + +#include "gifplot.h" + +%} + +%include gifplot.h diff --git a/Examples/GIFPlot/Tcl/full/runme.tcl b/Examples/GIFPlot/Tcl/full/runme.tcl new file mode 100644 index 0000000..f469e71 --- /dev/null +++ b/Examples/GIFPlot/Tcl/full/runme.tcl @@ -0,0 +1,67 @@ +# Plot a 3D function + +catch { load ./gifplot[info sharedlibextension] gifplot} + +# Here is the function to plot +proc func { x y } { + return [expr { 5*cos(2*sqrt($x*$x+$y*$y))*exp(-0.3*sqrt($x*$x+$y*$y)) }] +} + +# Here are some plotting parameters +set xmin -5.0 +set xmax 5.0 +set ymin -5.0 +set ymax 5.0 +set zmin -5.0 +set zmax 5.0 + +# Grid resolution +set nxpoints 60 +set nypoints 60 + +set cmap [new_ColorMap cmap] +set frame [new_FrameBuffer 500 500] +FrameBuffer_clear $frame $BLACK + +set p3 [new_Plot3D $frame $xmin $ymin $zmin $xmax $ymax $zmax ] +Plot3D_lookat $p3 [expr {2*($zmax-$zmin)}] +Plot3D_autoperspective $p3 40 +Plot3D_rotu $p3 60 +Plot3D_rotr $p3 30 +Plot3D_rotd $p3 10 + +proc drawsolid { } { + global xmin ymin zmin xmax ymax zmax nxpoints nypoints p3 BLACK + Plot3D_clear $p3 $BLACK + Plot3D_start $p3 + set dx [expr {1.0*($xmax-$xmin)/$nxpoints}] + set dy [expr {1.0*($ymax-$ymin)/$nypoints}] + set cscale [expr {240.0/($zmax-$zmin)}] + set x $xmin + for {set i 0} {$i < $nxpoints} {incr i 1} { + set y $ymin + for {set j 0} {$j < $nypoints} {incr j 1} { + set z1 [func $x $y] + set z2 [func [expr {$x+$dx}] $y] + set z3 [func [expr {$x+$dx}] [expr {$y+$dy}]] + set z4 [func $x [expr {$y+$dy}]] + set c1 [expr {$cscale*($z1-$zmin)}] + set c2 [expr {$cscale*($z2-$zmin)}] + set c3 [expr {$cscale*($z3-$zmin)}] + set c4 [expr {$cscale*($z4-$zmin)}] + set c [expr {int(($c1+$c2+$c3+$c4)/4)}] + if {$c < 0} { set c 0 } + if {$c > 239} { set c 239 } + Plot3D_solidquad $p3 $x $y $z1 [expr {$x+$dx}] $y $z2 [expr {$x+$dx}] [expr {$y+$dy}] $z3 $x [expr {$y+$dy}] $z4 [expr {$c+16}] + set y [expr {$y + $dy}] + } + set x [expr {$x + $dx}] + } +} + +puts "Making a nice 3D plot..." +drawsolid + +FrameBuffer_writeGIF $frame $cmap "image.gif" +puts "Wrote image.gif" + |
