Elias' Computed Pictures
The pictures
- It all started out as a simple little program that computed a sphere
using ambient light, diffusion, specular reflection and antialiasing.
(17K)
- Then I added walls and shadows and a possibility to have many spheres.
(23K)
- Cylinders are a little harder to implement, but it's not a big problem
if you love linear algebra! (24K)
- After that, cones were not difficult to include, it's almost as simple
as cylinders.
(15K)
The program
These pictures have been computed by a C program written by me
which uses my own vector and linear algebra routines.
The program writes the picture as a ppm (portable pix map) file which can
be converted to any format. Input is given as a text file
(example) describing the
scene to be rendered.
I'm still experimenting with this program, but the code currently looks
like this:
An object hierarchy
I have also written a program that builds an hierarchy of objects.
An object consists of subobjects that consist of subobjects... that
consist of primitives (spheres, cylinders, walls and cones).
The object hierarchy makes it easy to move a part of an object
without requiring to directly move every part of that part. For example, a
human body might consist of a head, a torso, two arms and two legs.
The head in turn might consist of a sphere and a cylinder. An arm
might consist of an upper arm, a forearm and a hand. If I want to
move an arm, I just have to tell the program to change the coordinates
of the arm object; all parts of the arm will then do the
correct movements automatically.
I have made a movie (247K) with this technique.
(It took a few hours on an SGI workstation to compute all pictures in it.)
Here's the code for the object hierarchy and the movie:
These programs are completely portable!
Compile them on your PC or Mac or SGI or Amiga or C64 or Cray :) or
whatever your favourite machine is.
You only need a ppm converter to get a useful format of the picture.