Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site unc.unc.UUCP
Path: utzoo!watmath!clyde!bonnie!akgua!mcnc!unc!glassner
From: glassner@unc.UUCP (Andrew S. Glassner)
Newsgroups: net.graphics
Subject: Re: Constant-Time Ray-Tracing
Message-ID: <149@unc.unc.UUCP>
Date: Thu, 15-Aug-85 10:42:50 EDT
Article-I.D.: unc.149
Posted: Thu Aug 15 10:42:50 1985
Date-Received: Sun, 18-Aug-85 04:07:09 EDT
References: <1063@dual.UUCP> <1723@saber.UUCP> <1312@utcsri.UUCP>
Reply-To: glassner@unc.UUCP (Andrew S. Glassner)
Distribution: net
Organization: CS Dept, U. of N. Carolina, Chapel Hill
Lines: 24
Summary: 


The basic idea is to subdivide space recursively into an octtree, 
until each node of the tree contains no more than some small
number of objects.  You then trace a ray by determining what node it
is in, and only intersecting against the objects in that node.  If you
hit an object in that node (and you usually do), you know you don't 
have to test against any more objects.  If you don't hit something in
that node you project into the next node and try again.  Since each
node contains a number of objects less than or equal to some small
number (like 5), you essentially test each ray against only that 
number of objects; hence the term "constant time".  It's really not
correct to say constant time, though; that's an optimistic viewpoint
that is often defeated in real scenes.  I refrained from giving the
algorithm that name in the original publication; I guess the temptation
was too great to resist in the long run.

Details of the "constant time" ray tracer may be found in my paper
"Space Subdivision for Fast Ray Tracing" in the
October 1984 IEEE Computer Graphics & Applications.

-- 

-Andrew		Andrew Glassner		
glassner@unc	decvax!mcnc!unc!glassner