================================================================
                    R  E  A  D      M   E
================================================================

Advanced Graphics Programming in C & C++
Roger Stevens & Christopher Watkins
M&T Publishing
501 Galveston Drive
Redwood City, CA 94063
ISBN 1-55851-173-3

ABOUT THIS DISKETTE

This diskette contains four files, in addition to this README file.
These files are:

             PART1    EXE    29561   6-19-91   6:51a
             PART2    EXE    48078   6-19-91   6:28a
             PART3    EXE    47946   6-19-91   6:29a
             PART4    EXE    41893   6-25-91   8:03p

Each file is a self-extracting compressed archive file that contains
the source code and data files for each of the four parts of the book
"Advanced Graphics Programming in C", by Roger Stevens and
Christopher Watkins.  

Because of limited storage space, no executable files are shipped
with this diskette.  Rather, it is assumed you will compile the
source code to create your own EXE files, using the Turbo
C or Borland C++ language products from Borland International, Inc
(1800 Green Hills Road, Scotts Valley, CA 95067-0001  Tel: 408-438-8400).



USING THIS DISKETTE

It's best if you copy each of the above four files into its own
directory on your DOS drive. As always, save the original diskette in
a safe place in case your copies become lost or damaged.  To
"explode" (uncompress) the archive files, simply go into the
directory you've created for that file (e.g. "PART1"), and then type
the name of the file.  In less than a minute, you will have all
the source and data files for that section of the book in your
directory.


A GENERAL NOTE ABOUT ROBUSTNESS

The source code files in this diskette are for illustration purposes
only.  As such, there is very little "bulletproofing" of the kind
found in commercial programs.  For example, many programs do not
check if a particular data file is present before trying to open it.
As a consequence you will get a runtime error if you mistype a
filename.  Also, in the case of abnormal program exit such as this,
the VGA display state may be left in a different mode from the one at
time of program start.  You may need to reboot the machine to restore
the original VGA mode.  If you encounter runtime errors, you can try
to determine the cause by using powerful Turbo Debugger that is 
bundled with some Borland language products (and also available 
separately).


FILES FOR PART I OF THE BOOK

To produce the files for Part I of the book, explode the
self-extracting archive file PART1.EXE by typing: PART1

This will produce the following files in your directory:

             PART1    EXE    29561   6-19-91   6:51a
             BIFURCAT C       1221   5-07-91  11:22p
             GRAPH    INC    10681   5-13-91   7:23a
             LORENZ3D C       1770   5-28-91   6:00a
             MATH     INC     9354   5-13-91   7:28a
             MSETJSET C       5195   6-15-91   3:58p
             ORBIT2P  C       2365   5-07-91  11:25p
             ORBIT3P  C       3501   5-07-91  11:25p
             STRATR3D C       1612   5-07-91  11:27p
             TRIANGLE C       1720   5-22-91   8:29p


Note that the PART1.EXE file remains in your directory.

Two of the files (GRAPH.INC and MATH.INC) are code files
that are included (by use of the preprocessor directive "#include")
within other source files.

To compile any of the above source code files, first make sure that
the Turbo C (or Borland C++) directory forms part of your current
path, and then type:

                BCC TRIANGLE

to compile, say, the source code file TRIANGLE.C (in the case of
Borland C++). Consult your Borland or Turbo manual for more
information on running the compiler.  After compilation, run the
resulting program TRIANGLE.EXE to produce the image of a recursive
triangle.



PART II: SOLID MODELING 

To explode the files for part II of the book, run
the self-extracting program by typing:   PART2

This will produce the following files in your directory:

             PART2    EXE    48078   6-19-91   6:28a
             ADDOBJS  INC     9121   5-30-91   1:55a
             CONEPYRM C       2456   5-30-91   6:20a
             CUBE     DAT      102   6-03-91   8:13p
             CUBEPLAN SCN      337   6-03-91   8:51p
             CYLINDER C       2796   5-30-91   6:21a
             DESMAKE  C       2367   5-30-91   1:46a
             DISPOBJS INC    11931   5-30-91   5:15a
             FOURCOLS SCN      970   2-04-90   2:13p
             GRAPH    INC    10800   5-30-91   1:56a
             HMSPHERE C       3037   5-30-91   6:21a
             MAKEOBJS C       2067   6-01-91   3:56a
             MATH     INC     9407   5-30-91   1:56a
             MODEL    C      13852   6-03-91   8:58p
             MODEL    DES       33   5-30-91   5:18a
             MODEL    INC     5331   5-30-91   1:56a
             MOLECULE SCN      658   7-07-90   6:51p
             PLOTEQN1 SCN      203   7-07-90  12:03p
             PLOTEQN2 SCN      203   7-07-90  12:03p
             PLOTEQN3 SCN      203   7-07-90  12:03p
             PLOTEQN4 SCN      203   7-07-90  12:04p
             PLOTEQNS C       3668   6-12-91   6:42p
             PYRAMID  SCN      514   5-30-91   5:32a
             SCNMAKER C       5065   6-03-91   8:50p
             SHAPES   SCN      823   5-30-91   8:43a
             SHPMK    INC     2886   5-30-91   1:57a
             SOLOFREV C       4443   6-12-91   6:53p
             SOLOFREV SCN      868   6-20-90  11:36p
             SPHERE   C       2365   5-30-91   6:22a
             SPHRPLAN SCN      311  10-14-90   5:21p
             SPHRWALL SCN      514   2-04-90   2:14p
             STAKTORS SCN      397  11-08-90   9:25p
             TOROID   C       2895   5-30-91   6:22a
             WELL     SCN     1897   7-10-90  12:34p
             
Note that the original file PART2.EXE remains in your directory.

Although you should consult the relevant sections of the book for
more information, the following will describe the steps necessary to
create one example from in the book, in this case the MOLECULE image.

1. First, create the file SPHERE.DAT by compiling SPHERE.C
   and running the resulting program SPHERE.EXE.  This will show an
   image of a sphere on the screen and create a corresponding .DAT
   file

2. Then, create the file CYLINDER.DAT by compiling CYLINDER.C
   and running the resulting program CYLINDER.EXE.  This will show an
   image of a cylinder on the screen and create a corresponding .DAT
   file.

3. Then, create the program MODEL.EXE by compiling MODEL.C (and
   its associated include files). Run the program MODEL.EXE and
   when it prompts you for a .SCN file name, type: MOLECULE
   This will result in an image of a molecule displayed on the screen.

Follow a similar procedure for the other .SCN files.  Some images
require the file GRID.DAT.  This data file is produced by the program
PLOTEQNS.EXE (created by compiling PLOTEQNS.C).  

Note that (as mentioned in the book text) PLOTEQNS.C is capable of
creating several different .DAT files, depending on which blocks of
code are enable.  To enable the fragment of code that results in
GRID.DAT (which starts on line 33 and ends on line 44 of PLOTEQNS.C)
make sure that this section has no begin-comment marker in front of
it. (The begin-comment in C is "/*"). This is the default.

To enable creation of a different .DAT file by PLOTEQNS.EXE (say, the
file "PLOTEQN1.DAT"), disable the block of code from line 33 to 44,
and enable the code from line 45 to line 59 of the same file.
Then compile the program and run it to create PLOTEQN1.DAT.


PART 3: Z-BUFFER AND HORIZON RENDERING

To explode the files for part III of the book, run
the self-extracting program PART3.EXE by typing:   PART3

This will produce the following files in your directory:

             PART3    EXE    47946   6-19-91   6:29a
             ADDONS   INC     5050   6-02-91   1:50p
             BOWL     DES       55   5-06-91   9:32a
             CPM      C       2641   5-13-91   7:09a
             CPM1     DES       46   6-02-91   1:40p
             CPM2     DES       47   5-08-91   1:27a
             CPMJ     C       2879   5-07-91  11:07p
             CPMJ1    DES       46   6-02-91   1:34p
             CPMJ2    DES       45   5-08-91   1:29a
             DESMAKE  C       3489   6-02-91   1:50p
             FINDLMTS C       1222   5-07-91  11:09p
             GRAPH    INC    10681   5-13-91   7:23a
             HMSPHERE C       2342   5-07-91  11:10p
             HMSPHERE DES       56   5-06-91   9:34a
             HMTOROID C       3094   5-07-91  11:11p
             HMTOROID DES       55   5-06-91   9:24a
             MAGNFLDS C       1918   5-15-91  11:30a
             MAGNFLDS DES       54   5-06-91   4:04a
             MATH     INC     9354   5-13-91   7:28a
             MOUNTAIN C       3621   5-07-91  11:12p
             MOUNTAIN DES       44   5-06-91   9:49a
             PLASMA   C       2796   5-15-91  11:31a
             PLOTEQN  C       2726   5-07-91  11:15p
             PLOTEQN1 DES       43   5-06-91   5:16p
             PLOTEQN2 DES       43   5-06-91   5:15p
             PLOTEQN3 DES       43   5-06-91   5:15p
             PLOTEQN4 DES       43   5-06-91   7:01a
             QUATER   C       5174   5-08-91  10:35p
             QUATER   INC     2065   5-13-91   7:19a
             RENDER   C      13717   6-17-91   9:53p
             RENDER   INC     3092   5-13-91   7:20a
             REVSOL2  DES       44   6-03-91   9:49p
             REVSOLID DES       44   6-03-91   9:49p
             SMEAR    C       1546   6-03-91  10:19p
             SMOOTH   C       1376   5-07-91  11:18p
             TC000A   SWP   131072   6-17-91   9:54p
             VIEWSLIC C       1943   5-07-91  11:19p


Note that PART3.EXE also remains in the directory.

You should consult the book text for more information,
but, briefly, here are the steps necessary to produce
one of the example images in the book, that of a
fractal mountain.  

1. First, create the data file MOUNTAIN.DAT by
   compiling the source code file MOUNTAIN.C and running 
   the resulting program MOUNTAIN.EXE.  This produces
   the desired data file

2. Then compile the source code file RENDER.C to
   produce the program RENDER.EXE.  Run this program and
   type "MOUNTAIN" when prompted for a file name.



PART 4: RAY-TRACING

To explode the files for part IV of the book, run
the self-extracting program PART4.EXE by typing:   PART4

This will produce the following files in your directory:

            PART4    EXE    41893   6-25-91   8:03p
            RAYTRACE C      48586   5-15-91   1:20p
            MARBLES  RT      2006   6-18-91  12:32p
            MOLECULE RT      6264   6-19-91   3:17p
            OFFICE   RT      5083   6-19-91   9:44a
            PARK     RT      6914   6-18-91   1:26p
            PLANETS  RT      6261   6-19-91   7:56p
            PYRAMID  RT      4951   6-18-91   9:54p
            DISPLAY  C       5013   5-13-91   7:00a
            MATH2    INC     9488   5-13-91   7:28a
            STACK    RT      3412   6-18-91   2:33p
            GRAPH2   INC    11317   5-13-91   7:24a

Note that PART4.EXE also remains in the directory.

You should consult the book text for more information,
but, briefly, here are the steps necessary to produce
one of the example images in the book, that of a
ray-traced office scene.

Note that some examples in this section are set up
for Super-VGA resolution (1024 x 768).  If you do not
have a Super-VGA display adapter of the kind mentioned
in the text, you will need to make changes in the
source code (and in some of the datafiles).

For the office scene:

1. Edit the file GRAPH2.INC to change the resolution
   from super-VGA (1024x768) to 320x200, by changing
   lines 39 & 40 from:
            #define MaxXres 1024
            #define MaxYres 768
   To:
            #define MaxXres 320
            #define MaxYres 200

2. Then compile the source code file RAYTRACE.C to
   produce the program RAYTRACE.EXE.  Run this program and
   type "OFFICE" when prompted for a file name.  This
   will use the data file OFFICE.RT to create an image
   with VGA resolution of 320 (Horz) by 200 (Vert). RAYTRACE
   generates a monochrome image to the screen as it is
   raytracing the image, and produces a color image file
   OFFICE.CPR on your hard drive.  Depending on the output 
   resolution some of these files can be very large!

3. Compile the source code file DISPLAY.C to produce
   the executable file DISPLAY.EXE.  This file will
   generate a color image on the screen using the data
   in OFFICE.CPR

Some of the RT files in this section are setup for SuperVGA
resolution. For example the file MARBLES.RT has the following
at lines 13 & 14:

          XRES    = 1024
          YRES    = 768

This will need to be changed to 320x200 for lower resolution
display.

Good luck, and enjoy these programs!

