Polygonamy 3D Virtual World History
-----------------------------------
From: judd@merle.acns.nwu.edu (Stephen Judd)
Subject: Polygonamy (Flaws and all)
Date: 6 Feb 1996 19:04:43 GMT
Well... for what it's worth, here is Polygonamy. I am out of time
and also out of memory (there are 512 bytes free between $CE00 and $CFFF),
so the program is not as good as it could be. Ah well, it's purpose was
to test some ideas I had, and explore their limitations.
There are three objects in the world. I wanted to do five but ran out
of memory (I could get some large chunks back with a little code rewrite).
One of the objects is static, the others are in motion.
There are still some rough edges, which I have tried to fudge around.
Unfortunately they only became apparent at the very end.
To measure how many frames per second the program is getting, move up to
the first object. Every 360 degrees is 128 frames, so if you time a
full revolution (or two or three) and divide into 128 (times the number
of revolutions you have just timed), you will get a good frames per
second estimate.
Well, here is a little blurb I wrote while in higher spirits:
Polygonamy
----------
A study in three dimensions.
by Stephen L. Judd --> sjudd@nwu.edu
My goal was to create a 3D virtual world for the C64, e.g. a space
populated with various three-dimensional objects, which I could wander around
in. I wanted it to be full-screen 320x200 hires bitmapped. Furthermore, I
wanted the objects to be solid, and since there are only two colors I
wanted to be able to put patterns on the faces. Finally, naturally, I
wanted the program to be fast. This was the framework in which I placed
myself.
Just a brief history of this project: I have wanted to do a 3D
world for a very long time, and have been thinking about it for some
time in the back of my head; my imagination was probably first fired
the first time I played Elite. I wrote down the necessary equations one
afternoon last summer, for a high school student I was teaching, and
the equations are very simple. I took a break to get some work of
measureable value accomplished, but in October I began work on the
graphics algorithm, which was very tough! I worked steadily on this for
two months, and in December I finally began to code the graphics. In mid
January, I got them to work. Adding the rest took a few weekends more.
I have about 128 pages of notes, diagrams, analytical calculations, and
BASIC test programs in my C64 notebook; this is my most ambitious project
to date and I hope you enjoy the results.
One caveat before we begin: I am primarily interested in the
challenge of designing the algorithms, which means I like to come up
with my own solutions. Thus, you may find more efficient methods
in a graphics book or perhaps in someone else's code; I have examined
neither, so I have no idea what the relative merit of my algorithms
may be. These are simply my solutions to challenges placed before me.
And if you know of a better way to do things, please feel free to email
me!
evetS-
--