XWAVE(1) X Version 11 XWAVE(1)
4 February 1991
NAME
xwave - A real-time perspective mesh demo for X
SYNOPSIS
xwave [ -amp A ] [ -bound bits ] [ -cols C ] [ -dampfactor B ] [ -demo
nameOrNum ] [ -edit ] [ -force funcname ] [ -forcecol N ] [ -forcefull
] [ -forcepoint R C ] [ -forcerow N ] [ -omega M ] [ -omega2 M ] [ -
plotvel ] [ -printdemo nameOrNum ] [ -root ] [ -rows R ] [ -springconst
K ] [ -stereo ] [ -version ] [ -wave funcname ]
DESCRIPTION
Xwave plots a perspective projection of a plane grid oscillating in
three-space in real time. You can select the size of the grid, a
forcing function to apply (and where to apply it), and what wave
propagation model to use. You can display a plot of the velocity of
the points in the grid as well as the position. Double buffering is
simulated using a background pixmap. Other options are described
below in the "OPTIONS" section. While the wave is being displayed,
you can pan and zoom, stop and start updates, and make other changes.
This is described below in the "INTERACTIVE USE" section.
OPTIONS
-amp A
Select the amplitude of the forcing function. Typical numbers
are between 20 and 100. Default amplitude is 100.
-bound bits
Select which corners and edges of the grid are bound and which
are free. By default, all corners and edges are bound. If you
specify a single "0" or "1" as the argument to -bound, it applies
to all eight corners and edges. Otherwise, each character in the
string applies to one corner or edge: if that character is "0",
the corresponding corner or edge is free; else it is bound. The
sequence of corners and edges in the string is: lrlc, lr, lrhc,
hc, hrhc, hr, hrlc, lc, where l is low, h is high, r is row, and
c is column. For example, -bound "00111000" means the high
column end of the grid, including those corners, are bound, and
all other corners and edges are free.
-cols C
Specify how many columns are in the grid. The minimum number of
columns is 2. Larger numbers give more detailed wave displays,
but take longer to compute and thus do not update as quickly.
The default is 25.
-dampfactor B
Specify the damping factor used in the "wave" propagation model.
See the -wave switch for more details. The default is 0.001.
- 1 - Formatted: October 27, 2025
XWAVE(1) X Version 11 XWAVE(1)
4 February 1991
-demo nameOrNum
Select a demonstration to run. Each demo is equivalent to a
specific set of switches (which you can see with the -printdemo
command line option). For a quick tour of the program, run
"xwave -demo N" starting with N=0 and incrementing until it tells
you there are no more demos.
-edit
Allows the user to interactively shape the wave while the program
is running. When the program is in edit mode, the mouse controls
an X-shaped cursor that moves over the surface of the grid.
Position the cursor to where you want to modify the wave and
press and hold the left mouse button. At this point, dragging
the mouse up and down will modify the amplitude of the wave and
dragging it left and right will control the frequency. Releasing
the mouse button will allow you to modify additional points.
When you are finished editing points, press the right mouse
button to enter continuous run mode.
-force funcname
Specify the name of the forcing function to use. This can also
be changed interactively (see the INTERACTIVE USE section).
-forcecol C
Specify that the selected forcing function is to be applied to
all grid points in the specified column. (The multisine forcing
function ignores this information.)
-forcefull
Specify that forcing functions which do not cover the full cycle
should force a zero value during the remainder of the cycle. By
default, the forcing function takes no action during this part of
the cycle, but lets the point move freely. This affects the
following forcing functions: delta, pulse, onehalfsine,
onehalfsinesquared.
-forcepoint R C
Specify that the selected forcing function is to be applied to
the specified grid point. (The multisine forcing function
ignores this information.)
-forcerow R
Specify that the selected forcing function is to be applied to
all grid points in the specified row. (The multisine forcing
function ignores this information.)
-omega M
Specify a frequency multiplier for forcing functions. A larger
number makes the forcing functions cycle through their values
faster.
- 2 - Formatted: October 27, 2025
XWAVE(1) X Version 11 XWAVE(1)
4 February 1991
-omega2 M
Specify a secondary frequency multiplier. This number is used in
the following forcing functions: pulse, onehalfsine,
onehalfsinesquared. If "-omega2 1" is specified, each of these
functions will have a duty cycle of 1/2; if "-omega 2" is
specifed, it will be 1/4, etc.
-plotvel
Specify that a plot of the velocity of each point in the grid
should appear below the plot of the position of each point in the
grid. The velocity information is updated only by the "wave"
propagation function.
-printdemo nameOrNum
Print the switches that comprise the specified demo, then exit.
-root
Plot the wave in the root window.
-rows R
Specify how many rows are in the grid. The minimum number of
rows is 2. Larger numbers give more detailed wave displays, but
take longer to compute and thus do not update as quickly. The
default is 18.
-springconst K
Specify the spring constant to use in the "wave" propagation
function. See the -wave switch for more details. The default is
0.01.
-stereo
Plot separate projections in red and blue. Make sure you have
your 3-d glasses handy. You also need a color display
(obviously).
-version
Prints the current version of xwave and exits.
-wave funcname
Specify the name of the wave propagation function to use. You
can specify none, which allows you to see the "naked" forcing
function. You can specify relax, which gives a pleasant demo
with the multisine forcing function (the original xwave program).
You can specify wave, which uses a physical wave propagation
model. In the wave model, each point has a mass of 1 and a
velocity as well as a position. A simple spring model is used, F
= -K*x -B*v, where K is the spring constant (specified with
-springconst) and B is the damping factor (specified with
-dampfactor). The distance used for x is the simple vertical
distance between a point and its neighbors. Note that since this
is a discreet simulation, the simulation is highly dispersive
- 3 - Formatted: October 27, 2025
XWAVE(1) X Version 11 XWAVE(1)
4 February 1991
(low frequencies travel faster), so single pulses do not travel
very well. However, you can still see the effects of reflection
against a free or bound end, set up nice standing waves, see how
the velocity is out of phase with the position, etc.
INTERACTIVE USE
While xwave is running, you can change the perspective by using the
mouse buttons. You can pan the picture as it is running by holding
down the middle mouse button and moving the mouse. You can zoom in
and out by holding down the left or right mouse buttons. (Note that
these operations do not work unless xwave is running in continuous run
mode.) There are a number of single-key keyboard commands you can
enter into the graphics window of xwave. These commands can be
entered whether or not xwave is in continuous run mode. If the
command is not understood, the bell is rung. Note that there may be a
bit of delay in processing a keyboard command when the program is in
continuous run mode.
c Clear the data and reset the forcing function time; everything
starts over again.
d Load the forcing function data. This is useful when in step
mode.
f Select a different forcing function. The new forcing function
name is printed out.
p Print out data. Prints out all velocity and position data which
is non-zero. Mainly useful in step mode for debugging.
q Quit the program.
r Toggle run/step mode. In run mode, the program runs continuously
and updates the screen. This consumes 100% of the available cpu
time, and looks nice. In step mode, you can step through each
generation by pressing the space bar, and see in detail how the
grid changes at each step. By default, the program comes up in
continuous run mode.
t Toggle timing mode. When the program is in time mode, it prints
an approximation of how many frames per second it is displaying.
This is re-calculated and printed every 50 frames.
w Select a different wave propagation function. The new
propagation function name is printed out.
<space>
Step (when in step mode). Calculates and displays the grid at
the next time point.
- 4 - Formatted: October 27, 2025
XWAVE(1) X Version 11 XWAVE(1)
4 February 1991
AUTHORS
Paul Riddle (paulr@umbc3.umbc.edu)
Mike Friedman (mikef@umbc3.umbc.edu)
Jim McBeath (jimmc@hisoft.uucp)
- 5 - Formatted: October 27, 2025