From albanycs!leah:rsb584 Wed Mar 23 22:48:11 1988
Received: by albanycs.albany.edu (5.54/4.8)
	id AA29501; Wed, 23 Mar 88 22:11:59 EST
Date: Wed, 23 Mar 88 22:11:55 EST
From: albanycs!leah:rsb584 (Raymond S Brand)
Received: by leah.Albany.EDU (5.58/1.1)
	id AA02552; Wed, 23 Mar 88 22:11:55 EST
Message-Id: <8803240311.AA02552@leah.Albany.EDU>
To: albanycs:beowulf!rsbx
Subject: patchsphere.txt

>From efo@pixar.UUCP Mon Mar 21 16:07:52 1988
Path: leah!itsgw!nysernic!cmx!batcomputer!cornell!uw-beaver!mit-eddie!ll-xn!ames!pasteur!ucbvax!ucsfcgl!pixar!efo
From: efo@pixar.UUCP (efo)
Newsgroups: comp.graphics
Subject: Re: Defining a sphere with Bezier patches
Summary: You have more info than you think
Keywords: sphere, Bezier, REYES
Message-ID: <1632@pixar.UUCP>
Date: 21 Mar 88 21:07:52 GMT
References: <2390@saturn.ucsc.edu>
Organization: Pixar -- Marin County, California
Lines: 41

In article <2390@saturn.ucsc.edu>, skinner@saturn.ucsc.edu (Robert Skinner) writes:
> In the 1987 Siggraph article on the REYES architecture, Cook, Carpenter
> & Catmull state that a sphere can be defined by 32 patches.  They give
> 
> The closest I get is a formula for a Bezier CURVE that is very close
> to a circular arc of 90 degrees.  Starting with that, I can define 3
> of the Bezier boundaries as great arcs on the sphere and the fourth is
> a point at the pole.  This still leaves the center 4 points of patch
> undefined.  Besides that, this would only use 8 patches.  So I suspect
If you have a 2d Bezier curve that approximates a circular arc,
you have enough information to fabricate a chunk of a sphere.
Since you have the location of the tangent (internal) control points
at each end of the curve, you of course have the edges of the patch
defined nicely.  Let me label the points in one patch:
	00 01 02 03
	10 11 12 13
	20 21 22 23
	30 31 32 33
You're still missing points 11, 12, 21, and 23.  However, you also know
how this patch must attach to its neighbor.  Suppose points 00-03
are at the pole and 30-33 are on the equator.  Points 22,23,32,and 33
all must lie on the plane tangent to the sphere at point 33.
This plane also passes through points 20,21,30,and 31 of the patch to our
patch's "right", and similarly for the patch below and below-and-to-the-right
of this patch. Since points 22,23, and point 21 of the patch to our right
must be collinear, and similarly for 22, 32, and 12 of the patch below us,
we can choose point 22 to be point 23 + point 32 - 2*(point 33).
You will also find that point 12 is not so hard to pick.
If you say that the n.pole is on the positive z axis, and the equator lies
on the xy plane, you can pick point 12 such that points 12, 13 and 11-of-the
patch to your right are collinear and the projection on the xy plane of points
02, 12, 22, and 32 are collinear.

Note that the tangent of the point (x,y) on a circle is (-y, x) 
(that is, has slope -y/x) and maybe
this will become clearer.

You can do this with arcs of less than 90 degrees and you get correspondingly
closer to a true sphere.  

Eben Ostby / Pixar


Discuss this article in the forums


Date this article was posted to GameDev.net: 7/16/1999
(Note that this date does not necessarily correspond to the date the article was written)

See Also:
NURBS, Splines and Patches

© 1999-2011 Gamedev.net. All rights reserved. Terms of Use Privacy Policy
Comments? Questions? Feedback? Click here!