4va(1)

NAME
4va, ctorus, cutctorus, 4vdmake - 4D object tumbler for X-Windows and object generation programs

SYNOPSIS
4va [{ -xy -xz -yz -xw -yw -zw } <angle> ] [-np] [-ns] [-nt] [-cw] [ -zd <dist> ] [ -wd <dist> ] [ -lc <color> ] [ -bc <color> ] [ -lw <width> ] [ -d <display> ] [ -s <scale> ] [ -h | -? ] <object-file>

ctorus <x-increments> <y-increments>
cutctorus <x-increments> <y-increments>

4vdmake <x-grid-size> <y-grid-size>

DESCRIPTION
4va is a fourth dimensional visualization program for X-Windows. It takes as input a file describing an object in up to 4 dimensions and tumbles it in a window according to rotation values given on the command line.

  Options

-xy, -xz, -yz, -xw, -yw, -zw <angle>
    Specify the amount of rotation each cycle in each of the 6 planes (x-y, x-z, and so on). The angle is given in degrees and appended directly to the option, as in -xw4.5. If any of these options are set on the command line, the defaults are cleared. The defaults are -xz0.6, -xw0.6, and -yw0.45.

-np Tell 4va not to do perspective. Normally perspective is done on both the z and w axes.

-ns Don't rescale the object in the window if the window is resized. Normally, if the window is resized, the object is rescaled in proportion to the new window size. Specifying -ns turns this off.

-nt Don't set a name for the title bar. On some window managers, this will suppress a title bar even being displayed on the window.

-cw Tell 4va to clear the window each cycle with a call to XClearWindow() instead of drawing over the old object in the background color. Using -cw is nice for larger objects, but for smaller objects letting 4va draw over the lines is faster and doesn't flicker.

-zd <dist>, -wd <dist>
    Specify the viewer's distance, in pixels, along the z and w axes for perspective purposes. Naturally this doesn't have much meaning if -np is specified. The default is 430.0. Place the number directly after the switch, as in -zd400.0.

-lc <color>, -bc <color>
    Specify the names of the foreground (line) and background colors, as in -lc LightGreen. The defaults are black background with red lines.

-lw <width>
    Specify the width of the object's lines, in pixels. The default is a width of 0, which is the hardware-defined fastest line. Example is -lw5.

-d <display>
    Specify the display name. 4va first checks the -d switch, then the DISPLAY environment variable, then then defaults to the display unix:0.

-s <scale>
    Specify the scaling factor for all four dimensions, as in -s150.0. The default is 200.0.

-h, -?
    Get a listing of 4va's options.

  Ctorus, cutctorus, and 4vdmake options
These three programs are object file generators for 4va. Ctorus generates a Clifford Torus with the densities named. For example, ctorus 20 20 will generate a Clifford Torus file with 20 increments around each of the two sets of circles defining the torus (the x-y set and the z-w set).

Cutctorus is the same as ctorus, except that all of the circles in one direction are invisible, making the torus easier to see.

4vdmake is a "customizable" object generation program that produces objects in three dimensions. The program generates a grid of points and lines on the x and y plane and applies to them a function (defined in the code) for the z value of each coordinate. This is a quick hack to let 4va display 3D functions. It can easily be modified to generate 4D functions. 4vdmake fits the grid (with the density on the x and y axes given on the command line) into a -1 to 1 square on the x and y axes.

  Object files
Object files (usually with the extension .4vd) have the following format:

    p={ number-of-points }

    <points...>

    l={ number-of-lines }

    <lines...>

    n=name-of-object

For example, a simple object file for a single line might look like

    p={2}
    1.0 1.0 1.0 1.0
    -1.0 -1.0 -1.0 -1.0
    l={1}
    0 1
    n=StupidLine

If the number-of-points and number-of-lines do not match the number of points and lines in their sections, 4va will read the incorrect amount of data from the object file and will get confused. As you can see, each point specifies the x, y, z, and w coordinates as floating-point numbers. If you're only creating a 3D object, for example, you can set all the w values to 0.0. Each line specifies the points between which the line extends. In the above example, we have one line between point 0 and point 1 (notice that numbering starts with 0).

NOTES
4va allocates memory for objects dynamically. If 4va runs out of memory it will exit with a return code of -1 and print a "malloc" error message.

4va does not check that the object file that it's reading is well-behaved. If your object file is corrupt, 4va may hang.

4va has worked on every system I've tried it on; it's basic enough that it should port to your machine. If you have problems, let me know.

AUTHOR
Matt Welsh (welsh@odin.ncssm.edu). Please send me any questions, bugs, or suggestions.