(Adapted from article 41198, published in Research Disclosure number 411 (July 1998), page 974.)

Automatically Generated, Perceptually Smooth Fractal Movie

                               
Timothy D. Greer

Disclosed is a method for generating a looping animation resulting in the appearance of smooth continuous magnification (or de-magnification) of a fractal. The method generates an animation based on a self-similarity relation intrinsic to the fractal itself and therefore avoids the need for special calculation and planning on the part of the user.

In [1], a method is described to automatically generate a looping animation of zooming into or out of a fractal. The technique described there is satisfactory for relatively low-resolution movies with not too many frames, up to 150x150 pixels and 16 frames, for example. However, with more frames and at higher resolutions an apparent flaw in the movie becomes noticeable. The movie seems to speed up and slow down, speed up and slow down. The "flaw" is not an error in calculation or presentation, however. Rather, it is a psychological expectation of the way things should grow. The algorithm described in [1] calls for a linear series of steps in the transformation from the fractal at one scale to the fractal at another scale, where the two scales differ by the rescaling inherent in one of the mappings defining the fractal. While linear steps may seem a natural choice, a geometrically increasing step size is the choice that results in smooth apparent growth.

The linear series is in step 3 of [1],
where a transformation matrix k  is defined as the
                               n
 
affine mapping whose matrix part takes the (polar coordinates)
point (1, 0) to the point    (1 - n(1-r)/N, nt/N), and the
point (1, pi/2) to the point (1 - n(1-R)/N, nT/N + pi/2), and
choosing the scalar part of k  so that k  has the same fixed point
                             n          n
 
as a particular mapping of the fractal being scaled.  The parameters
r, R, t, and T come from the rescaling mapping as described in
[1], and n and N are the frame number and
total number of frames in the movie, respectively.  Using the ratio n/N
as a factor in defining the images of the points (1, 0) and (1, pi/2) as
described results in a linear scaling.  A geometric scaling can be
achieved by instead employing n/N as a power.  The new, geometrically
scaling k  should be defined as the affine mapping whose matrix part
         n
 
takes the (polar coordinates) point
 
                         (n/N)
(1, 0)    to the point (r      , nt/N), and the point
 
                         (n/N)
(1, pi/2) to the point (R      , nT/N + pi/2),
 
and choosing the scalar part of k  as before.
                                 n

The effect of using this new scaling is that each perceived part of the image grows by the same fraction between each consecutive pair of frames. For example, if the fractal appeared to grow to 1.1x between frames 1 and 2, then it will grow to 1.21x between frames 1 and 3, 1.331x between frames 1 and 4, and so on by powers of 1.1.

A practical extension of this is to vary the growth rate on purpose to control the speeding-up/slowing-down effect, for example to mask some other abrupt change. In a video game built around a looping fractal animation, one might wish to vary the iterated function system mapping used to generate the animation, and put this variation under user control. Thus the part of the fractal which grows into the whole image would be changed by a signal from the user. This means that the parameters, including r and R, change. The exponent n/N could be varied slightly over several frames to smooth the transition. Alternatively, the n/N exponent might be retained but the r, R, t, and T values changed gradually rather than abruptly.

Reference

  1. Greer, Timothy D. "Auto-generating Fractal Movie", IBM Technical Disclosure Bulletin, Vol. 40 No. 3 (March 1997), pp. 235-237.


The information provided, and views expressed on this site are my own and do not represent the IBM Corporation.



 

Return to the author's home page.