throbber
20.1
`
`Extensions of Previous Techniques
`/
`
`1013
`
`20.1 . 1 Advanced Modeling with Splines
`
`With the tensor-product spline-patch surfaces defined in Chapter II , more control vertices
`must be added to gain a higher level of detail. The Oslo algorithm and its descendents
`[COHE80; BART87] can be applied to the control mesh of such splines to produce new
`control meshes with more vertices but identical resulting surfaces. This refinement of the
`cont.rol mesh is shown for a line spline in Fig. 20.1. The circled black dots control the shape
`of the thickened segment in the figure; if one of these i.s moved, the shape of the thickened
`segment changes. But bow many control vertices do we need to redraw tbe arc in its changed
`form? For tbe portions outside the thickened segment, we can use the (comparatively few)
`white vertices; for tbe portion inside the thickened segment, we can use the circled black
`vertices. This localization of detail is the fundamental notion of hierarchical B-spline
`modeling developed by Forsey and Bartels [FORS88].
`Two problems arise: maintaining a data structure for the hierarchical spline, and
`altering the large-scale spline without damaging the small-scale one. These two problems
`can be solved together. We wish to alter the large-scale spline so that the small-scale spline
`follows the alteration. We do this alteration by describing the locations of tbe (adjustable)
`control vertices for the small-scale spline in a coordinate system based on the larger spline.
`This prescribes the data structure for the splines as well- a tree in which the control
`vertices of each spline are specified in coordinates based on its parent node in the tree. The
`initial position of each control vertex defines the origin of its coordinate system, and the
`displacements along the normal to the large spline and in the directions tangent to the
`coordinate curves of the large spline determine a basis for this coordinate system. Thus,
`when the large spline is altered, the origin and basis vectors for the displacement coordinate
`system are moved as well.
`Figure 20.2 shows how this procedure works for a line spline. Color Plate IV.4(a) is an
`example of the impressive results this technique can yield. Notice that the final object is just
`a union of portions of various spline patches, so the conventional rendering techniques that
`can handle splines (including polygonal and ray-tracing renderers) can be adapted to render
`these objects. About 500 control nodes. each of which contains a parametric position, a
`level of overlay (i.e., depth in the heirarchy) and an offset, were used to define the dragon's
`head. By defining the offsets of control vertices relative to particular segments in a skeletal
`
`0
`
`0
`
`0
`
`(a)
`
`o'-o--o
`
`o'---o---1 o
`
`o .._o--o
`
`(b)
`
`Fig. 20.1 The spline curve in (a) is generated from the control vertices shown there.
`This collection of control vertices can be refined as shown in (b). The black dots in (b)
`are the new control vertices; the circled black dots are the ones that contribute to the
`thickened segment.
`
`1075
`
`

`
`1014
`
`Advanced Modeling Techniques
`
`0
`
`(a)
`
`.,'-o-~
`
`(b)
`
`··'---
`
`(C)
`
`Fig. 20.2 (a) A line spline with its control points. (b) The same spline with subdivided
`control points in the central segment. Only the middle control point can be moved if
`continuity is to be maintained. The coordinate system for the displacement of the
`middle control point is shown a s well. (c) The middle control point after it is moved,
`along with the displacement vector in the new coordinate system.
`
`model (instead of relative to the parent surface), Forsey and Bartels have extended this
`technique to automate the production of skin, as shown in Color Plate JV.4(b).
`Sederberg and Parry describe a different approach to altering spline models [SEDE86]
`that can be used to alter arbitrary models, although it is based on spline deformations of
`3-space. A function from 3-space to 3-space may be thought of as a way to assign new
`positions to each point in space. Suppose we have such a function and it leaves most points
`unmoved, but deforms some region of space. (Figure 20.3 shows an analogous deformation
`in a region of the plane.) !fa solid is described by the coordinates of its points in the original
`space, then applying the function to the coordinates of every point of the solid yields a solid
`that has been deformed by the function, just as the shaded area was deformed in Fig. 20.3.
`Sederberg and Parry use functions from 3-space to 3-space that are based on Bernstein
`polynomials, which have the form'
`Q •.• (1) = (~) ,, <t - ,r •. o < , < t.
`These polynomials have the property that L 1=0Q. ,,{t) = I (see Exercise 20.1) and that the
`individual Qs are always between 0 and I.
`If we establish a coordinate system in 3-space defined by an origin X and three basis
`vectors S, T, and U, we can form an (n + I) x (m + I) x (p + I) lattice of points in
`3-space by considering all points
`Pijl =X + (i!n) S + (j!m)T + (kip) U , 0 < is n, 0 < j < m, 0 :s k < p,
`which is a gridlike arrangement of points in a parallelepiped based at X with sides
`determined b~...S· T and U. Any linear combination 'i.c~iik of these points satisfying 0 s
`C;ik s I and 2,;cijl = I lies within the convex hull of the points Pijl, that is, within the
`parallelepiped. Furthermore, every point within the parallelepiped can be expressed as a
`combination P = X + sS + IT + uU for some triple of numbers 0 s s, 1, u s I. Suppose
`we define a function on the parallelepiped by the formula
`
`1The notation e) means n!l(i!(n -
`
`i)!).
`
`1076
`
`

`
`20.1
`
`Extensions of Previous Techniques
`
`1015
`
`Fig. 20.3 The plane is deformed so that the region inside the rectangle is distoned,
`but the rest of the plane remains fixed. A figure drawn within the rectangle is also
`deformed.
`
`F(X + sS + ff + uU)
`
`••0 }•0 1•0
`
`I
`
`= ± f t (~) ("!) (p) t 1 (I - 1)• - 1 sl ( I - s)'•-i u• (I - u)P-• P 111
`
`J
`
`/(
`
`Then because of the convexity property of the Bernstein polynomials, the parallelepiped
`maps to itse.lf, with the boundary going to the boundary. In fact, if the PiiJt are left in the
`positions defined previously, F sends each point in the parallelepiped to itself. If the P iJits
`are moved, the map is no longer the identity. As long as only internal P iJits are moved,
`however, the map will remain the identity on the boundary of the parallelepiped. Thus, the
`PuaS provide shape control over any item within the b<»t. Color Plate IV.S shows an example
`of adjusting a free-form shape; Color Plate IV .6 shows a hammer modeled using free-form
`deformations.
`Computing vertices of a polygonal object after transformation by a trivariate Bernstein
`polynomial is simple (we just express each vertex as a linear combination X + sS + ff +
`uU and substitute in the formula for F), so the method is suited for use with all polygonal
`renderers. It is less clear how to ray-trace these deformed objects, although the specialized
`methods described for another class of deformations by Barr (BARR84] might be applied.
`
`20.1 .2 Noise-Based Texture Mapping
`
`Peachey [PEAC85) and Perlin [PERL85) have extended traditional texture mapping by
`using solid textures. Recall that in traditional bump mapping or panern mapping the texture
`was extracted from a 2D image that was mapped onto the surface to be rendered (see
`Chapters 14 and 16). Described differently, for each point of the surface, a point in the 2D
`texture is computed, the values surrounding this point are averaged by some filter, and the
`resulting texture value is assigned to the surface point.
`This mechanism is altered slightly for solid textures. A texture value is assigned to each
`point in a 3D texture spaa. To each point of the object to be textured, there is associated
`
`1077
`
`

`
`1016
`
`Advanced Modeling Techniques
`
`some point in the texture space; the value of the texture at that point is also associated with
`the surface point. We can illustrate this solid texturing by considering an analogous physical
`example. If ~-e take a block of marble (the texture space), then each point of the marble,
`both on the surface and in the inside, has some color. Thus, if we carve a sphere from this
`marble block, the points on the surface of the sphere are also colored. If we carve the sphere
`from a different section of the marble, the colors are different, of course.
`The two tasks associated with this mechanism are the generation of textures and the
`mapping from objects to the texture space (i.e. , the association of points on the object with
`points in the texture space). The mapping to texture space is easy in systems wllere the
`object is modeled in some space, then is transformed into "world space" before rendering.
`In this case, the natural choice for texture space is modeling space. During rendering, a 30
`point on the object is transformed by the inverse of the modeling transformation to give a
`point in modeling space whose coordinates provide the index into the solid texture (this
`situation corresponds to our carving in marble). When this is done, changing the
`world-space position of the object does not affect its pattern. Using world-space coordinates
`as indices into the solid texture can provide interesting special effects. If the marble sphere
`is translated in the course of an animation, the texture slides through it, and it appears to be
`continuously recarved from new marble. In other systems, some coordinate system (or else
`some map from world space to texture space) must be chosen to associate each point on the
`object with a texture value.
`Generating textures is a different matter. Before discussing it, Jet us reconsider the
`function of texture mapping. When a texture map is used for environment mapping onto a
`reflective surface, there is no underlying solid texture. The same is true when a texture map
`is used, say, to put a label on a box, or when bump mapping is applied to an object to
`simulate architectural details such as regularly spaced ceiling tiles, or to generate surface
`characteristics such as the directional reflections on brushed metals. But when we simulate
`the texture of a material such as concrete, wood, or marble, the internal structure of the
`underlying material determines the resulting appearance of the object. In such cases, solid
`textures are most applicable.
`One type of intermediate case, too, that is handled nicely by solid textures is surface
`characteristics, such as the texture of stucco, that should be statistically independent of their
`surface position. Here ordinary pattern mapping tends to produce an orientation because of
`the coordinate system in which the pattern map is defined, and because of the
`transformation from the mapping space onto the object, which tends to compress or expand
`the pattern in some places (e.g., when mapping onto a sphere with standard coordinates,
`one tends to compress the pattern near the poles). SoHd textures handle this problem by
`associating values that can be made effectively independent of the shape of the surface (see
`Color Plate IV. 7c).
`Generating a solid texture requires associating one or more numbers with each point in
`some volume. We can specify these numbers by generating them at each point of a 30
`lattice (this is sometimes called a 3D image), and then interpolating to give intermediate
`values, or simply by giving one or more real-valued functions on a region in 3-space.
`Most of the functions used by Perlin are based on noise functions. He defines a
`function Noise(x, y, z) with certain properties: statistical invariance under rigid motions and
`
`1078
`
`

`
`20.1
`
`Extensions of Previous Techniques
`
`1017
`
`band limiting in the frequency domain. The first of these means that any statistical
`property, such as the average value or the variance over a region, is about the same as the
`value measured over a congruent region in some other location and orientation. The second
`condition says that the Fourier transform of the signal is zero outside of a narrow range of
`frequencies (see Section 14.10). In practical terms, this means that the function has no
`sudden changes, but has no locations where the change is too gradual, either. One way of
`expressing the band limiting is that, for any unit vector (a. b, c) and any point (Xo. y0 , zo),
`the integral
`
`0
`
`~ J Noise(x0 + ta, Yo + tb , z0 + rc)f(mt) dr
`i.s zero when /(r) = sin(t) or cos{l), and m is outside some small range of values.
`Essentially, this says that the noise along a parameterized line in the (a, b, c) direction has
`no periodic character with period m.
`Such a noise function can be generated in a number of ways, including direct Fourier
`synthesis, but Perlin has a quick and easily implemented method. For each point in the
`integer lattice (i.e., for each point (x0, y0, zo) with x0 Yo and z0 all integers) we compute and
`store four pseudorandom2 real numbers (a, b, c , d). Computed' = d- (ax0 + by0 + cz0).
`Notice that if we substitute the point (Xo, y0 , z0) into the formula ax + by + cz + d' we get
`the value d. We now define the Noise function at an arbitrary point (x, y, z) by the r~ rules:
`lf (x, y, z) is a point of the integer lattice, then Noise(x, y, z) = the d value at that lattice
`point = ax0 + by0 + cz0 + d'. For any point not on the lattice, the values of a, b, c, and d'
`are interpolated from the values at the nearby lattice points (Perlin recommends a cubic
`first in x, then in y, then in z) to give values for a, b, c, and d' at the point
`interpolation-
`(x, y, z). Now Noise(x, y, z) is computed: Noise(x, y, z) = ax + by + cz + d'.
`Since the coefficients a, b, c, and d' are interpolated by cubics on the integer lattice, it
`is clear that there are no discontinuities in their values (in fact, they will all be differentiable
`functions with well-behaved derivatives). Hence, the value of Noise(x, y, z) is also well
`behaved and has no high-frequency components (i.e., sudden changes).
`Noise functions can be used to generate textures by altering colors, normal vectors, and
`so on [PERL85]. For example, a random gray-scale value can be assigned to a point by
`setting its color to (r, g, b) = Noise(x, y, z) * (1.0, 1.0, 1.0) (assuming that the Noise()
`function has been scaled so that its values I ie between 0 and I). A random color can be
`assigned to a point by (r, g, b)= (NoiseA(x, y, z), NoiseB(x, y, z), NoiseC(x, y, z)), where
`NoiseAO , NoiseB() and NoiseC() are all different instances of the Noise() function. An
`alternate way to assign random colors is to use the gradient of the noise function:
`Dnoise(x, y, z) = (dNoise/dx, dNoise/dy, dNoiseldz),
`which generates a vector of three values at each poinL These values can be mapped to color
`v-.tlues.
`
`2Pseudorandom-number generation is provided by the RandomO function in many systems. See also
`[KNUT69].
`
`1079
`
`

`
`1018
`
`Advanced Modeling Techniques
`
`If an object has sufficiently great extent, it may not be practical to gen.erate a texture for
`its entire bounding box. Instead, as in Chapter 16, we generate the texture on a finite box
`(perhaps 256 by 256 by 256) and use the low-order bits of the point's coordinates to index
`into this array (using modular arithmetic to wrap around from 255 to 0). We can use this
`finite texture array to generat.e another type of noise by defining Noise2(x, y, z) = Noise(2x,
`2y, 2z). Noise2 will have features that are one-half of the size of those generated by NoiseO.
`By generating a combination of such multiples of NoiseO, we can create a number of
`fascinating textures; see Exercises 20.2 and 20.3. Perlin has extended solid textures to allow
`the modification of geometry as well [PERL89). Some examples of the results are shown in
`Color Plates IV.8 and IV.9.
`Peachey [PEAC85] uses somewhat different mechanisms for specifying solid textures.
`One of the most interesting is what he calls projection textures, although the term
`"extrusion textures" might apply as well. ln such textures, the value of the teltture function
`is constant along certain parallel lines in the volume. For example, such a texture might be
`constant along each line parallel to the z axis, while on any (x, y)-plane cross-seetion it
`might look like a conventionai2D texture. The effect is like that of a (nonperspective) slide
`projector: When someone walks in front of the screen, the image is mapped onto the person
`instead of onto the screen. These textures are most interesting when several are combined.
`If the teJttures are constant along different lines, the results can effectively simulate
`completely random textures. The textures in Color Plate IV. 10 are all based on projection
`textures.
`
`20.2 PROCEDURAL MODELS
`
`Procedural models describe objects that can interact with external events to modify
`themselves. Thus, a model of a sphere that generates a polygonal representation of the
`sphere at a requested fineness of subdivision is procedural: The actual model is determined
`by the fineness parameter. A model that determines the origin of its coordinate system by
`requesting information from nearby entities is also procedural. A collection of polygons
`speci lied by their vertices is not a procedural model.
`Procedural models have been in use for a long time. One of their best features is that
`they save space: It is far easier to say "sphere with 120 polygons" than to list the 120
`polygons explicitly. Magnenat-Thalman and Thalman [MAGN85] describe a procedural
`model for bridges in which a bridge consists of a road, a superstructure, piers, and parapets,
`and is specified by giving descriptions of these aloqg with an orientation to determine the
`bridge's position. Each of the pieees (road, piers, etc.) is specified by a number of
`parameters (length of the road, number of joints in the road, height of the pier, etc.) and the
`procedure then generates the model from these. This is akin to the primitive instancing of
`Chapter 12, but differs in that the geometric or topological nature of the object may be
`influenced by the parameters. Also, the model generated does not need to consist of a
`collection of solids; it might be a collection of point light sources used to exhibit the bridge
`in a night scene, for instance. In any case, specifying a few parameters leads to the creation
`of a very large model. In the case of the bridge, the only things created are various sorts of
`bridges. In subsequent procedural models, such as particle systems, however, highly
`
`1080
`
`

`
`20.2
`
`Procedural M odels
`
`1019
`
`variable classes of objects are supported under a single class of procedures.
`One important aspect of procedural models is their ability to interact with their
`environment. Amburn, Grant, and Whitt.ed introduce two eKtensions to standard procedur(cid:173)
`al models: a communication method through which independent procedures can influence
`one another's behaviors, and a genera.lization of the notion of subdivision to include a
`change of representation [AMBU86].
`lnterobject communication can be used to control the shapes of objects defined by
`procedures. Amburn, Grant, and Whitted use as an eKample a road passing through wooded
`terrain. The terrain is generated by stochastic subdivision of triangles (see Section 20.3),
`the trees are generated using grammar-based models (see Section 20.4), and the road is
`generated by eKtrusion of a line along a spline path. At the top level, the road must follow
`the geometry of the terrain. At a finer level of detail, however, the terrain is bulldozed to let
`the road be smooth. Each of these objects thus must control the other. The bases of the trees
`must be placed on the terrain, but not too close to the road. To execute this interobject
`control, each of the subdivision procedures proceeds for a few steps, then checks its
`progress against that of the others.
`This interobject checking can be eKtremely expensive; the road may be modeled with
`hundreds of rectangles and the terrain with thousands of triangles. Checking for
`intersections among these and establishing communications between each pair is prohibi(cid:173)
`tively laborious. lnstead, during the construction of the road, bounding boKes for the road,
`for each pair of control points for the road, and for each segment of the road were
`constructed. Similar bounding boxes were maintained during the subdivision of the
`triangles. As soon as the bounding box of a child triangle no longer intersected that of the
`road, communications between the two were severed. Thus, there were only a few overlaps
`at the finest level of subdivision.
`These subdivisions were also subject to changes of representation. At some point in a
`subdivision process, the current model representation may no longer seem adequate to the
`modeler; and the modeler (or some other procedure in the model) may request that some
`procedural object change its representation. Thus, a shape that is initially modeled with
`Bezier spline patches, recursively subdivided, may at some point be altered to implement
`further changes using stochastic subdivision to make a ''crinkly'' material of some specific
`overall shape. Amburn, Grant, and Whitted store these changes of representation in a script
`associated either with the individual object or with the class of the object; the script might
`say, for example, "At the third level of subdivision, change from Bezier to stochastic. At
`the fifth level, change to a particle system representation. " The human modeler is also
`allowed to interact with the objects as the procedural modifications take place. Our hope is
`that, in the future, such interactions will no longer be necessary, and that the models will be
`able to determine for themselves the best possible representation.
`Most of the remaining models in this chapter are procedural in some way. Many of
`them are generated by repeated subdivision or repeated spawning of smaller objects. The
`subdivis.ion terminates at a level determined by the modeler, the model , or (depending on
`implementation) the renderer, which can request that no subpixel artifacts be generated, for
`example. The power of these models is manifested in how they amplify the modeler's effort:
`Very small changes in specifications can result in drastic changes of form. (Of course, this
`can be a drawback in some cases, if the modeler cannot direct a tiny change in the result.)
`
`1081
`
`

`
`1 020
`
`Advanced Modeling Techniques
`
`20.3 FRACTAL MODELS
`
`Fractals have recently attracted much attention (VOSS87; MAND82; PEIT86]. The images
`resulting from them are spectacular, and many different approaches to generating fractals
`have been developed. The term fractal has been generalized by the computer graphics
`community to include objects outside Mandelbrot's original definition. It has come to mean
`anything which has a substantial measure of exact or statistical self-similarity, and that is
`how we use it here, although its precise mathematical definition requires statistical
`self-similarity at all resolutions. Thus, only fractals generated by infinitely recursive
`processes are true fractal objects. On the other hand, those generated by finite processes
`may exhibit no visible change in detail after some stage, so they are adequate approxima(cid:173)
`tions of the ideal. What we mean by self-similarity is best illustrated by an example, the von
`Koch snowflake. Starting with a line segment with a bump on it, as shown in Fig. 20.4, we
`replace each segment of the line by a figure exactly like the original line. This process is
`repeated: Each segment in part (b) of the figure is replaced by a shape exactly like the entire
`figure. (It makes no difference whether the replacement is by the shape shown in part (a) or
`by the shape shown in part (b); if the one in part (a) is used, the result after 2• steps is the
`same as the result after n steps if each segment of the current figure is replaced by the entire
`current figure at each stage.) If this process is repeated infinitely many times, the result is
`said to be self-similar: The entire object is similar (i.e., can be translated, rotated, and
`scaled) to a subportion of itself.
`An object that is not exactly self-similar may still seem fractal; that is, it may be
`substantially self-similar. The precise definition of statistical self-similarity is not necessary
`here- we need only to note that objects that "look like" themselves when scaled down are
`still called fractal.
`Associated with this notion of self-similarity is the notion of fractal dimension. To
`define fractal dimension, we shaiJ examine some properties of objects whose dimension we
`know. A l.ine segment is ID; if we divide a line into N equal parts, the parts each look like
`the original I ine scaled down by a factor of N = N JJ1. A square is 20: if we divide it into N
`parts, each part looks like the original scaled down by a factorofvN = N112• (Foreltample,
`a square divides nicely into nine subsquares; each one looks I ike the original scaled by a
`factor oft.) What about the von Koch snowflake? When it is divided into four pieces (the
`pieces associated with the original four segments in Fig. 20.4a), each resulting piece looks
`like the original scaled down by a factor of 3. We would like to say it bas a dimension d,
`where 411d = 3. The value of d must be Jog(4)/log(3) = 1.26 .... This is the definition of
`fractal dimension.
`
`(a)
`
`(b)
`
`(c)
`
`Fig. 20.4 Construction of the von Koch snowflake: each segment in (a) is replaced by
`an exact copy of the entire figure, shrunk by a factor of 3. The same process is applied
`to the segments in (b) to generate those in (c).
`
`1082
`
`

`
`20.3
`
`Fractal Models
`
`1021
`
`Fig. 20.5 (a) The Julia-Fatou set for c = -0.12375 + 0 .056805i; (b) the Jutia-Fatou
`set for c = -0.012 + 0 .74i.
`
`The most famous two fractal objects deserve mention here: the Julia-Fatou set and the
`Mandelbrot set. These objects are generated from the study of the rule x -+ .1- + c (and
`this is the simplest and best known). Here x is a complex
`many other rules as well-
`number,3 x =a + bi. If a complex number has modulus< I, then squaring it repeatedly
`makes it go toward zero. If it bas a modulus > I, repeated squaring makes it grow larger
`and larger. Numbers with modulus I still have modulus I after repeated squarings. Thus.
`some complex numbers "fall toward zero" when they are repeatedly squared, some "fall
`toward infinity, " and some do neither-the last group forms the boundary between the
`numbers attracted to zero and those attracted to infinity.
`Suppose we repeatedly apply the mapping x --. .1- + c to each complex number x for
`some nonzero value of c, such as c = - 0.12375 + 0 .056805i; some complex numbers will
`be attracted to infinity, some will be attracted to finite numbers, and some will go toward
`neither. Drawing the set of points that go toward neither, we get the Julia-Fatou set shown
`in Fig. 20.5(a).
`Notice that the region in Fig. 20.5 (b) is not as well connected as is that in part (a) of
`the figure. In part (b), some points fall toward each of the three black dots shown, some go
`
`•tr you are unfamiliar with complex numbers, it suffices to treat i as a special symbol and merely to
`know the definitions of addition and multiplication of complex numbers. lf t = c + di is a second
`complex number, then x + z is defined to be (a + c) + (b + d)i, and xz is defined to be (ac - bd) +
`(ad + bc)i. We can represent complex numbers as points in the plane by identifying the point (a, b)
`with the complex number (a + bi). The modulus of the number a + bi is the real number (lr + iJ)'",
`which gives a measure of the "size" of the complex number.
`
`1083
`
`

`
`1022
`
`Advanced M odeling Techniques
`
`to infinity. and some do neither. These last points are the ones drawn as the outline of the
`shape in part (b). The shape of the Julia-Fatou set evidently depends on the value of the
`number c. If we compute the Julia sets for all possible values of c and color the point c black
`when the Julia-Fatou set is connected (i.e, is made of one piece, not broken into disjoint
`"islands") and white when the set is not connected, we get the object shown in Fig. 20.6,
`which is known as the Mandelbrot set. Note that the Mandelbrot set is self-similar in that,
`around the edge of the large disk in the set, there are several smaller sets, each looking a
`great deal like the large one scaled down.
`Fortunately, there is an easier way to generate approximations of the Mandelbrot set:
`For each value of c, take the complex number 0 = 0 + Oi and apply the process x-+ J! + c
`to it some finite number of times (perhaps 1000). If after this many iterations it is outside
`the disk defined by modulus < I 00, then we color c white; otherwise, we color it black. As
`the number of iterations and the radius of the disk are increased, the resulting picture
`becomes a better approximation of the set. Peitgen and Richter [PEIT86] give explicit
`directions for generating many spectacular images of Mandelbrot and Julia-Fatou sets.
`These results are extremely suggestive for modeling natural forms, since many natural
`objects seem to exhibit striking self-similarity. Mountains have peaks and smaller peaks
`and rocks and gravel, which all look similar; trees have limbs and branches and twigs,
`which all look similar; coastlines have bays and inlets and estuaries and rivulets and
`drainage ditches, which all look similar. Hence, modeling self-similarity at some scale
`seems to be a way to generate appealing-looking models of natural phenomena. The scale at
`which the self-similarity breaks down is not particularly important here, since the intent is
`modeling rather than mathematics. ThlL~, when an object has been generated recursively
`through enough steps that all further changes happen at well below pixel resolution, there is
`no need to continue.
`Fournier, Fussell, and Carpenter [FOUR82] developed a mechanism for generating a
`class of fractal mountains based on recursive subdivision. It is easiest to explain in 10.
`
`Fig. 20.6 The Mandelbrot set. Each point c in the complex plane is colored black if the
`Julia set for the process x -+ II- + c is connected.
`
`1084
`
`

`
`20.3
`
`y
`
`Fractal Models
`
`1023
`
`y
`
`y
`
`~------------L----. x
`0
`
`0
`
`X
`
`0
`
`X
`
`(a)
`
`(b)
`
`(c)
`
`Fig. 20.7 (a) A line segment on the x axis. (b) The midpoint of the line has been
`translated in they direct ion by a random amount. (c) The result of one further iteration.
`
`Suppose we start with a tine segment lying on the x axis, as shown in Fig. 20. 7(a). lf we
`now subdivide the line into two halves and then move the midpoint some distance in they
`direction, we get the shape shown in Pig. 20.7(b). To continue subdividing each segment,
`we compute a new value for the midpoint of the segment from (x,, y,) to (x,. 1, y .. ,) as
`follows: x,... = i{.x; + x, . 1), y_ = t(y, + y,. ,) + P(.x;., - x;) R(x.,..), where PO is a
`function determining the extent of the perturbation in terms of the size of the line being
`perturbed, and R() is a random number' between 0 and 1 selected on the basis of x,_ (see
`Fig. 20. 7c). If P(s) = s, then the first point cannot be displaced by more than 1, each of the
`next two points (which are at most at heightia!ready) cannot be displaced by more than t.
`and so on. Hence, all the resulting points fit in the unit square. For P(s) = t', the shape of
`the result depends on the value of a; smaller values of a yield larger perturbations, and vice
`versa. Of course, other functions, such as P(s) = 2 -•, can be used as well.
`Fournier, Fussell, and Carpenter use this process to modify 20 shapes in the following
`fashion. They start with a triangle, mark the midpoint of each edge, and connect the three
`midpoints, as shown in Fig. 20.8 (a). They coordinate of each midpoint is then modified in
`the manner we have described, so that the resulting set of four triangles looks like Fig. 20.8
`(b). This process, when iterated, produces quite realistic-looking mountains, as shown in
`Color Plate IV .11 (although, in an overhead view, one perceives a very regular polygonal
`structure).
`Notice that we can start with an arrangement of triangles that have a certain shape, then
`apply this process to generate the finer detail. This ability is particularly important in some
`modeling applications, in which the layout of objects in a scene may be stochastic at a low
`level but ordered at a high level: The foliage in an ornamental garden may be generated by a
`stochastic mechanism, but its arrangement in the garden must follow st

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket