SAMBA is a front-end to the POLKA
algorithm animation system. Samba is, in essence, an interactive
animation interpreter that reads ASCII commands and performs the
corresponding animation actions. A set of example commands in Samba
format is shown at the end of this page. This format is designed to
be very easy to learn and use. The chief advantage of Samba is that a
program in any language can be annotated to generate these ASCII
commands, thus driving a visualization of the program. A
technical report about Samba and the documentation for the system are available
here.
Samba is available via anonymous ftp within the POLKA system. The
original version of the system is implemented in C++ on top of UNIX
and the X11 Window System. It should be run on a color monitor. A
newer version of the system (both Samba and POLKA) is available which
runs directly on top of Windows. Both versions are available to
be acquired via anonymous ftp from ftp.cc.gatech.edu under
pub/people/stasko. To access that place, press here .
A Java version of Samba, called JSamba is available now too.
This version runs as an applet and lets you try out some of the Samba
functionality over the Web.
Below are a couple Samba script files. Commands exist to create
objects, modify objects, and alter the viewing windows. Animations
are built in floating point coordinates, and multiple windows can be
used. The first field on each command is the command type. For
object creation commands, the second field is an ID that is used in
subsequent modifier commands. Trailing fields are then parameters to
these commands. The '{' brackets allow explicit concurrency of
commands.
comment This is a sample animation script
circle 1 0.8 0.8 0.1 red half
line 2 0.1 0.1 0.2 0.2 green thin
rectangle 3 0.1 0.9 0.1 0.1 blue solid
text 4 0.0 0.0 0 black Hello
text 5 0.5 0.5 1 black RealLongStringandThenSomeAndEvenMore
circle 6 0.3 0.3 0.2 wheat solid
triangle 7 0.5 1.0 0.6 0.8 0.4 0.9 cyan solid
bigtext 8 0.2 0.2 0 black Some Big Text
moveto 1 6
moverelative 3 0.05 -0.4
jumprelative 4 0.4 0.4
raise 1
lower 1
color 6 blue
move 3 0.5 0.5
jump 3 0.9 0.9
jumpto 3 6
raise 3
fill 3 half
fill 3 outline
fill 3 half
vis 3
vis 3
vis 6
delete 8
line 200 0.9 0.2 0.0 0.6 black thick
bigtext 8 0.6 0.2 0 DeepPink More Big Text
flextext 88 0.4 0.3 0 magenta 8x13bold Flex Text 8x13bold
rectangle 12 0.7 0.7 0.1 0.1 green solid
exchangepos 12 3
exchangepos 12 3
exchangepos 12 3
exchangepos 12 3
switchpos 12 3
circle 99 0.8 0.8 0.15 black outline
exchangepos 1 99
bg pink
bg LemonChiffon2
coords -0.5 -0.5 1.5 1.5
viewdef MainView 600 600
viewdef SecondView 400 400
comment Switch to MainView.
view MainView
comment Draw a line there.
line thinblackline 0.2 0.2 0.5 0.0 black thin
comment Switch to the SecondView.
view SecondView
comment Draw a rectangle here.
rectangle redrectangle 0.2 0.1 0.3 0.2 red half
view MainView
comment Let's move the rectangle and the line at the same time.
{
view SecondView
move redrectangle 0.3 0.3
view MainView
move thinblackline 0.5 0.5
}
delay 15
comment Now, let's move them separately.
moverelative thinblackline -0.2 -0.2
view SecondView
moverelative redrectangle 0.2 0.2
delay 15
comment Let's put in a polygon in SecondView.
polygon greenpoly 4 green solid 0.0 0.0 0.5 0.5 0.7 0.5 0.5 0.1 0.0 0.0
comment Let's alter the fill and color for the rectangle.
fill redrectangle solid
color redrectangle khaki
delay 15
comment Let's get rid of that polygon.
delete greenpoly
|
|
|
|
|