attraction - interactions of opposing forces
] [-background color
] [-window] [-root] [-mono] [-install]
] [-points int
] [-threshold int
balls | lines | polygons | splines | filled-splines | tails ] [-size
] [-segments int
] [-delay usecs
] [-radius int
] [-vx int
] [-vy int
[-noglow] [-orbit] [-viscosity float
] [-walls] [-nowalls] [-maxspeed]
[-nomaxspeed] [-correct-bounce] [-fast-bounce] [-fps]
program has several visually different modes of operation,
all of which are based on the interactions of a set of control points which
attract each other up to a certain distance, and then begin to repel each
other. The attraction/repulsion is proportional to the distance between any
accepts the following options:
- Draw on a newly-created window. This is the default.
- Draw on the root window.
- If on a color display, pretend we're on a monochrome
- Install a private colormap for the window.
- -visual visual
- Specify which visual to use. Legal values are the name of a
visual class, or the id number (decimal or hex) of a specific visual.
- -points integer
- How many control points should be used, or 0 to select the
number randomly. Default 0. Between 3 and 15 works best.
- -threshold integer
- The distance (in pixels) from each particle at which the
attractive force becomes repulsive. Default 100.
- -mode balls | lines | polygons | tails | splines |
- In balls mode (the default) the control points are
drawn as filled circles. The larger the circle, the more massive the
In lines mode, the control points are connected by straight lines;
the effect is something like qix.
In polygons mode, the control points are connected by straight lines,
and filled in. This is most interesting in color.
In splines mode, a closed spline is interpolated from the control
In filled-splines mode, the splines are filled in instead of being
outlines. This is most interesting in color.
In tails mode, the path which each particle follows is indicated by a
worm-like trail, whose length is controlled by the segments
- -size integer
- The size of the balls in pixels, or 0, meaning to select
the sizes randomly (the default.) If this is specified, then all balls
will be the same size. This option has an effect in all modes, since the
``size'' of the balls controls their mass.
- -segments integer
- If in lines or polygons mode, how many sets
of line segments or polygons should be drawn. Default 500. This has no
effect in balls mode. If segments is 0, then no segments
will ever be erased (this is only useful in color.)
- -delay microseconds
- How much of a delay should be introduced between steps of
the animation. Default 10000, or about 0.01 seconds.
- -color-shift int
- If on a color display, the color of the line segments or
polygons will cycle through the color map. This specifies how many lines
will be drawn before a new color is chosen. (When a small number of colors
are available, increasing this value will yield smoother transitions.)
Default 3. This has no effect in balls mode.
- The size in pixels of the circle on which the points are
initially positioned. The default is slightly smaller than the size of the
- This is consulted only in balls mode. If this is
specified, then the saturation of the colors of the points will vary
according to their current acceleration. This has the effect that the
balls flare brighter when they are reacting to each other most strongly.
In glow mode, all of the balls will be drawn the same (random) color,
modulo the saturation shifts. In non-glow mode, the balls will each be
drawn in a random color that doesn't change.
- Don't do ``glowing.'' This is the default.
- -vx pixels
- -vy pixels
- Initial velocity of the balls. This has no effect in
- Make the initial force on each ball be tangential to the
circle on which they are initially placed, with the right velocity to hold
them in orbit about each other. After a while, roundoff errors will cause
the orbit to decay.
- -vmult float
- In orbit mode, the initial velocity of the balls is
multiplied by this; a number less than 1 will make the balls pull closer
together, and a larger number will make them move apart. The default is
0.9, meaning a slight inward pull.
- -viscosity float
- This sets the viscosity of the hypothetical fluid through
which the control points move; the default is 1, meaning no resistance.
Values higher than 1 aren't interesting; lower values cause less motion.
One interesting thing to try is
attraction -viscosity 0.8 -points 300 -size 10 -geometry =500x500
Give it a few seconds to settle down into a stable clump, and then move the
drag the mouse through it to make "waves".
- This will cause the balls to continue on past the edge of
the screen or window. They will still be kept track of and can come
- This will cause the balls to bounce when they get to the
edge of the screen or window. This is the default behavior.
- Imposes a maximum speed (default). If a ball ends up going
faster than this, it will be treated as though there were .9 viscosity
until it is under the limit. This stops the balls from continually
accelerating (which they have a tendency to do), but also causes balls
moving very fast to tend to clump in the lower right corner.
- If this is specified, no maximum speed is set for the
- Uses the old, simple bouncing algorithm (default). This
simply moves any ball that is out of bounds back to a wall and reverses
its velocity. This works fine for most cases, but under some
circumstances, the simplification can lead to annoying effects.
- Uses a more intelligent bouncing algorithm. This method
actually reflects the balls off the walls until they are within bounds.
This can be slow if balls are bouncing a whole lot, perhaps because of
- -graphmode none | x | y | both | speed
- For "x", "y", and "both",
displays the given velocities of each ball as a bar graph in the same
window as the balls. For "speed", displays the total speed of
each ball. Default is "none".
- Display the current frame rate and CPU load.
to get the default host and display number.
- to get the name of a resource file that overrides the
global resources stored in the RESOURCE_MANAGER property.
Copyright © 1992, 1993, 1997 by Jamie Zawinski. Permission to use, copy,
modify, distribute, and sell this software and its documentation for any
purpose is hereby granted without fee, provided that the above copyright
notice appear in all copies and that both that copyright notice and this
permission notice appear in supporting documentation. No representations are
made about the suitability of this software for any purpose. It is provided
"as is" without express or implied warranty.
Jamie Zawinski <email@example.com>, 13-aug-92.
Viscosity support by Philip Edward Cutone, III.
Walls, speed limit options, new bouncing, graphs, and tail mode fix by Matthew
Strait. 31 March 2001