attraction - interactions of opposing forces
attraction [-display host:display.screen] [-foreground color] [-background color] [-win-
dow] [-root] [-mono] [-install] [-visual visual] [-points int] [-threshold int] [-mode
balls | lines | polygons | splines | filled-splines | tails ] [-size int] [-segments int]
[-delay usecs] [-color-shift int] [-radius int] [-vx int] [-vy int] [-glow] [-noglow]
[-orbit] [-viscosity float] [-mouse] [-no-mouse] [-mouse-size] [-walls] [-nowalls]
[-maxspeed] [-nomaxspeed] [-correct-bounce] [-fast-bounce]
The attraction 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 cer-
tain distance, and then begin to repel each other. The attraction/repulsion is propor-
tional to the distance between any two particles.
attraction accepts the following options:
-window Draw on a newly-created window. This is the default.
-root Draw on the root window.
-mono If on a color display, pretend we're on a monochrome display.
Install a private colormap for the window.
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.
How many control points should be used, or 0 to select the number randomly.
Default 0. Between 3 and 15 works best.
The distance (in pixels) from each particle at which the attractive force becomes
repulsive. Default 100.
-mode balls | lines | polygons | tails | splines | filled-splines
In balls mode (the default) the control points are drawn as filled circles. The
larger the circle, the more massive the particle.
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 points.
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 parameter.
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
If in lines or polygons mode, how many sets of line segments or polygons should be
drawn. Default 100. This has no effect in balls mode. If segments is 0, then no
segments will ever be erased (this is only useful in color.)
How much of a delay should be introduced between steps of the animation. Default
10000, or about 0.01 seconds.
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
-radius The size in pixels of the circle on which the points are initially positioned.
The default is slightly smaller than the size of the window.
-glow 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.
-noglow Don't do ``glowing.'' This is the default.
Initial velocity of the balls. This has no effect in -orbit mode.
-orbit 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.
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.
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 inter-
esting; lower values cause less motion.
One interesting thing to try is
attraction -viscosity 0.8 -points 75 \
-mouse -geometry =500x500
Give it a few seconds to settle down into a stable clump, and then move the mouse
through it to make "waves".
-mouse This will cause the mouse to be considered a control point; it will not be drawn,
but it will influence the other points, so you can wave the mouse and influence
the images being created.
Turns off -mouse.
In -mouse mode, this sets the mass of the mouse (analagously to the -size parame-
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 back.
-walls 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 tendancy to
do), but also causes balls moving very fast to tend to clump in the lower right
If this is specified, no maximum speed is set for the balls.
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
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 -nomaxspeed.
-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 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 (C) 1992, 1993, 1997 by Jamie Zawinski. Permission to use, copy, modify, dis-
tribute, 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 and mouse support by Philip Edward Cutone, III.
Walls, speed limit options, new bouncing, graphs, and tail mode fix by Matthew Strait. 31
X Version 11 14-Jun-97 XScreenSaver(1)