
                              !Shapes version 1.04
                             ======================
                           Henrik Bjerregaard Pedersen
                                   08-Aug-1992

   This program is Public Domain. You are free to copy it and give it
 to anyone, as long as you don't make any profit, and as long as I'm
 fully credited (by including this file). You may NOT sell it, but
 PublicDomain-libraries may charge a nominal fee to cover the cost of
 disc, postage etc.

   If you have any comments or improvements, please report to me, my
 address can be found at the end of this file.


    !Shapes version 1.04   08 August 1992
 -------------------------------------------------------------------------

   !Shapes is a very primitiv 3D-graph drawing and animation program.
   It wasn't really meant to be used by any other than me-self, but it
 turned out a little bit better than I'd expected, so here it is....

   Several examples are included in the directory !Shapes.Files. Load a
 file by dragging it to the Shapes-icon on the icon bar.

   !Shapes is a bit different from most other 3D-graph programs. Instead
 of simply calculating the third coordinate as a function of the two
 remaining (Z=f(X,Y)), !Shapes calculates both X, Y and Z from A and B:
             X = fx(A,B)
             Y = fy(A,B)   and
             Z = fz(A,B)
   which enables you to draw spheres, toroid and many other weird SHAPES.

   The animation part is very crude but works rather well....
   Besides A and B, there is a third parameter, FRAME, that can be included
 in the functions defining X, Y and Z. FRAME will run from 1 to FRAMES,
 which is set somewhere in the lower half of the Setup-window, and for
 each FRAME, the graph will be redrawn into a new sprite. When the
 drawing/animation is done, a window will open, and if you have drawn
 more than one frame, clicking SELECT or ADJUST in this window will run
 thru the frames. Besides FRAME, two other parameters describe the current
 position in the animation:
    PERC (PERCentage) runs from 0 (FRAME=1) to 1 (FRAME=FRAMES)
    FRP (FRame Percentage) runs from 0 to 1-1/FRAMES

   Finally, D gives the distance of A,B from the origin (D=SQR(A*A+B*B)).

   The following parameters may depend on FRAME, FRP, PERC:
    X(A,B), Y(A,B), Z(A,B), A-From, A-To, B-From, B-To, A-Steps, B-Steps,
    X-From, X-To, Y-From, Y-To, X-Scale, Y-Scale, Z-Scale, X-Rotate,
    Y-Rotate, Z-Rotate, Infinity and Zero.

   All these parameters, except for Infinity and Zero, may also
 contain D.
       
   If 'Fancy FX' is selected, the scaling and rotation may also depend
 on A and B (and X, Y and Z !!), but the calculations will take MUCH
 longer.

   The rest of the program is for you to explore...


   Some quick notes
  ==================
   If you don't want perspective, set Zero to 0 and Infinity to 1000000.
   To minimize the use of memory the graph(s) are drawn into MODE 0 sprites.
   Positive-X is to the right, Positive-Y is up.
   To use !Shapes as a normal 3D-graph-drawer, set X(A,B)=A,
 Y(A,B)=F(A,B) and Z(A,B)=B.
   To abort drawing during animations, press (and hold) Escape.

 ------------------------------------------------------------------------

   My address is:

   Henrik Bjerregaard Pedersen
   Stengaards Alle 13 B
   DK-2800 Lyngby
   Denmark
