GameDev.netDefining a Sphere with Bezier Patches

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
© 1999-2011 Gamedev.net. All rights reserved. |