[comp.graphics] extents to speed 3D clipping

hansen@mips.COM (Craig Hansen) (01/27/88)

In article <2001@elrond.CalComp.COM>, dennis@elrond.CalComp.COM (John R. Dennis) writes:
> I would like to implement extent checking to speed up 3D clipping. Our
> implementation allows the user to specify any transformation matrix and any
> number of arbitrary clip planes. Therefore after transformation an objects
> bounding box can be any 6 sided convex polyhedra. The question that must be
> answered for trival accept/reject clipping on a per clip plane basis is:
> does this polyhedra lie completely on one side of a clip plane and if so on
> which side?
> 
> Does anyone know how to efficently compute the answer to the extent visibility
> question given these parameters?

If the clip plane is at an arbitrary orientation, a check of which
side a point is w.r.t. the clip plane will require a computation
involving all coordinates. If the clip planes define a convex
polyhedra (this could be with as few as four clip planes, or as many
as six clip planes, depending on their orientation), you would do
better to consider all the clip planes at once, so establish the
bounds of the polyhedra representing the clip planes, and then use
extent checking to to the trivial/accept reject. A scan of the convex
polyhedra for minimum and maximum values in each coordinate gives a
bounding box to which you can check the input data against, and the
clip polhedra can be reverse-transformed from the clip space back into
the object space (prior to turning it into a bounding box, if you want
the smallest possible bounds), so you can do it before transforming
all the points in the input objects.

-- 
Craig Hansen
Manager, Architecture Development
MIPS Computer Systems, Inc.
...{ames,decwrl,prls}!mips!hansen or hansen@mips.com   408-991-0234