home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / j / juliaanim / !JuliaAnim / !Help < prev    next >
Encoding:
Text File  |  1992-09-24  |  28.8 KB  |  568 lines

  1.  
  2. !JuliaAnim (Quadratic Julia Set Real Time Animator).
  3.  
  4. By Ivar Wind Skovgaard.
  5.  
  6. This is version 1.52, which has been finished Thursday, 24 Sep 1992.
  7.  
  8.  
  9. Introduction:
  10.  
  11. This program, I hope, can be used by everybody to see some beautiful
  12. animated sequences of Julia sets. That is what the primary purpose of it is.
  13. However it can also be used to gain some insight into the fascinating
  14. objects that Julia sets are.
  15.  
  16. !JuliaAnim displays quadratic Julia sets and uses the inverse iteration
  17. method to allow you to explore the effects of different complex constants in
  18. the formula in 'real time'.
  19.  
  20. By moving the mouse or using the cursor keys you can change the complex
  21. constant in the expression for the Julia sets and (because of the speed of
  22. the inverse iteration method as well as ARM machine code) immediately see
  23. the shape of the set change on the screen (which is what I call 'real
  24. time').
  25.  
  26. In addition to showing Julia sets the program can also display 'Mandelbrot
  27. orbits' - the forward orbit of the current value of c as it would be when
  28. generating the Mandelbrot set - these orbits are of course also animated.
  29.  
  30.  
  31. Using the program:
  32.  
  33. Double-clicking on the !JuliaAnim icon will start !JuliaAnim, which takes
  34. over all the processing time of the machine (except for interrupts).
  35.  
  36. The program is controlled from the keyboard or the mouse. Initially the
  37. mouse is selected for control and by moving it you change the complex
  38. constant c shown at the bottom of the screen. This constant determines the
  39. shape of the Julia set and it is only constant in the sense that it is
  40. constant for a given image. The whole point of this program is to see what
  41. happens when you change this constant (confused? - well you probably still
  42. will be after reading the rest of this text if you ever get that far).
  43.  
  44. The following keys can be used with both mouse and keyboard control:
  45.  
  46. A           : Toggles automatic animation on and off
  47.               (during automatic animation the constant c follows the edge of
  48.                the cardioid and the greatest circle of the Mandelbrot set).
  49.  
  50. H           : Display a help screen.
  51.  
  52. I           : Toggles the background image of the Mandelbrot set on and off.
  53.  
  54. J           : Toggles Julia sets on and off
  55.               (if Julias are switched off then orbits are switched on).
  56.  
  57. M           : Toggles between mouse and keyboard control.
  58.  
  59. O           : Toggles Mandelbrot orbits on and off
  60.               (if orbits are switched off then Julias are switched on).
  61.  
  62. P           : Toggles mouse pointer on and off
  63.               (when on the pointer is also shown during keyboard control
  64.                and will then follow the current value of the constant c).
  65.  
  66. R           : Toggles random automatic animation on and off
  67.               (during random automatic animation the constant c
  68.                moves in a direction which changes randomly).
  69.  
  70. T           : Toggles text on and off
  71.               (with text off and some automatic animation on
  72.                you can let the program run indefinitely
  73.                without worrying about burn-in on the monitor).
  74.  
  75. V           : Toggles mirroring of orbit points on and off
  76.               (mirroring (around 0+0i) of orbit points can be used, if the
  77.                Julia set is connected to display extra points belonging to
  78.                the Julia set, and if the Julia set is unconnected to
  79.                display extra points not belonging to the Julia set).
  80.  
  81. #           : (On the keypad) Changes the framerate of animations by
  82.               cycling through 25, 16.7, 12.5 and 10 frames per second
  83.               (with Shift held down the cycling is the other way round).
  84.               On an ARM2 machine the program can't quite manage 25 frames
  85.               per second (due to the limited temporal resolution of the
  86.               centisecond timer - I think). As I have not tried the
  87.               program on an ARM3, I don't know if the extra speed
  88.               solves the problem, nor can I say how it will work
  89.               on the ARM250 based machines.
  90.  
  91. F1-F12      : Choose one of twelve preset complex constants
  92.               (these are the ones from page XII of 'The Beauty of Fractals').
  93.  
  94. Home        : Return to the initial complex constant c=-0.08+0.66i.
  95.  
  96. Copy        : Redraw the image with the current complex constant c.
  97.  
  98. Esc         : Quit the program.
  99.  
  100.  
  101. In addition the following keys can be used only during keyboard control:
  102.  
  103. Cursor keys : Changes the complex constant c in steps of 0.01
  104.               (when Shift is held down the steps are 0.05 but when Ctrl is
  105.                held down (without Shift) the steps are only 0.001 and the
  106.                number of frames per second is lower - incidentally Ctrl
  107.                also decreases the frame rate during mouse control).
  108.  
  109.  
  110. This program is not very accurate and it would not be well suited for
  111. zooming into the images. Because of that the display is fixed to a part of
  112. the complex plane with real values ranging from -2 to 2 and imaginary values
  113. ranging from -1.6 to 1.6. This is not as bad as it may sound because Julia
  114. sets do not increase in complexity when you magnify them and unlike the
  115. Mandelbrot set will usually display all their unique features on the
  116. macroscopic level.
  117.  
  118. For complex constants with a large magnitude (distance from 0+0i) the code
  119. will give an address exception error (due to overflow). To avoid this the
  120. program will not allow the absolute values of the real and imaginary parts
  121. of c to exceed 3.5. This is of no great significance, as very few Julia sets
  122. with values of c outside this range would be contained by the screen. The
  123. mouse pointer can move off the screen to allow the exploration of complex
  124. constants to the limits.
  125.  
  126. The orbits are quite easy to calculate but are even more sensitive to errors
  127. in the calculations due to the nature of normal forward iteration (inverse
  128. iteration is attracted to the correct set and thus small errors will
  129. eventually be 'forgotten' while forward iteration as used for the orbits
  130. moves away from whatever set you want to find and thereby enlarges any
  131. errors that occur) and are therefore not quite reliable (at least I don't
  132. think so) but they are pretty anyway.
  133.  
  134.  
  135. What can quadratic Julia sets be used for:
  136.  
  137. Quadratic Julia sets are based on the quadratic formula:
  138.  
  139. z(n+1)=z(n)^2+c, where c is a constant for a specific Julia set.
  140.  
  141. Both c and z(n) are complex numbers, which implies that they consist of a
  142. real part and an imaginary part (which is a real number multiplied by the
  143. imaginary unit i, which is the square root of -1). Complex numbers were
  144. invented a long time ago in order to solve some mathematical problems, or
  145. something like that, and they have since then been applied to many parts of
  146. science (they are useful in treating electric circuitry and necessary in
  147. quantum mechanics).
  148.  
  149. The Julia set then consists of all the points z(0) for which the series z(n)
  150. stays confined within a finite area for all values of n. It is hard to see
  151. any immediate connection between this and the real world, but in mathematics
  152. it can be very useful to explore a fairly simple formula to gain knowledge
  153. about it and then use this knowledge on more complicated problems.
  154. Furthermore it is common practice (e.g. in physics) to reduce a complicated
  155. problem to something simpler to be able to solve it, and a quadratic formula
  156. is a very common example of a simple but good approximation to a more
  157. complicated description. In my view none of this really matters as the
  158. beauty of the sets should be sufficient justification for making them.
  159.  
  160.  
  161. What to look for - and what not to look for:
  162.  
  163. Primarily you should look for a lot of pretty images and sequences of
  164. images. However there are a few things that are worth noticing as they
  165. actually have something to do with the mathematics behind the sets.
  166.  
  167. Playing around with the program (I hope you have done so by now) you may
  168. have noticed, that some Julia sets seem to be a single connected set while
  169. others seem to consist of a few large pieces, and some seem to consist of
  170. many small pieces. It turns out, when investigating the sets theoretically,
  171. that the quadratic Julia sets can be divided into just two categories: Those
  172. that are connected and those that are disconnected. What is meant by this is
  173. that a set is either in one piece, in which case any two points in the set
  174. can be connected by a line (not a straight line) consisting entirely of
  175. points from the set, or the set consists of a 'cloud' of infinitely many
  176. points, all of which are separated by areas not belonging to the Julia set
  177. (no two points from the set can be connected by a line consisting entirely
  178. of points from the set). A disconnected set is also called a Cantor set. If
  179. the set on screen seems to be in one piece it will usually be safe to assume
  180. that it really is connected, and if the set seems to consist of some points
  181. far apart it is probably disconnected (you can not of course see infinitely
  182. many distinct points on a screen with finite resolution). The problems occur
  183. with the sets that seem to consist of a few large pieces. Are they in fact a
  184. lot of disconnected points lying very close together or are they one big
  185. piece where the connections have not been calculated by the program?
  186.  
  187. Fortunately there is a simple way of telling wether a set is connected or
  188. not. In 1919 both Julia and Fatou proved that a Julia set is connected if a
  189. sequence of numbers which I call a Mandelbrot orbit stays confined within a
  190. certain region, and the Julia set is disconnected if the Mandelbrot orbit
  191. does not stay within this region (in which case it 'escapes to infinity',
  192. but as infinity is a bit hard to handle we just see wether it gets beyond a
  193. distance of two or more from the center 0+0i). By switching on Mandelbrot
  194. orbits in the program you should get a chance to see if the orbit is
  195. confined to some small area or is unconfined. If only a few points of the
  196. orbit appears spread all over the screen, then the orbit is probably
  197. unconfined and the Julia set is disconnected, but if the orbit consists of
  198. many points in a small area of the screen, then the Julia set is probably
  199. connected. Once again there are some orbits for which it can be hard to tell
  200. wether it is confined or not, but there are not many of these.
  201.  
  202. An additional set has been defined as the set of all those values of c for
  203. which the Julia set is connected (and the Mandelbrot orbit confined). This
  204. is the Mandelbrot set, and the outline of this can be seen in the background
  205. (as a great ugly spider, according to one of my friends), if it is toggled
  206. on. So if the pointer and thus the value of c is within this set the Julia
  207. set should be connected. On the borders of the Mandelbrot set some ambiguity
  208. may arise due to the finite resolution of the screen (I wish someone would
  209. make a display with infinite resolution), but this is a very small effect.
  210. It is interesting to note that the Mandelbrot set was in fact discovered in
  211. the attempt to find some system according to which Julia sets are connected
  212. or not.
  213.  
  214. There is an intimate relationship between the appearance of the Mandelbrot
  215. set around a given value of c and the corresponding Julia set in the same
  216. region. The parts of the two sets near to the value of c will look very much
  217. like each other, and the nearer you go to c the greater the likeness will
  218. become. In this way the Mandelbrot set can be seen as a 'dictionary' to the
  219. Julia sets, because a small part of a Julia set will look very much like the
  220. rest of the Julia set. This of course is only relevant for values of c near
  221. to the border of the Mandelbrot set, though the similarity of the two sets
  222. is true for all values of c, but far from the border there is not much to be
  223. seen near to c. The similarity between the two sets can be seen with this
  224. program particularly around the outer edges of the Mandelbrot set.
  225.  
  226. The Mandelbrot set can be used to observe even more fenomena. If you switch
  227. off the display of Julia sets and make the imaginary part of c equal to zero
  228. (this is most easily done with keyboard control), and then start with a
  229. value of c to the right of the Mandelbrot set and move to the left, you will
  230. initially see that the Mamdelbrot orbit goes off the screen to the right.
  231. But when c passes into the cardioid (the largest part of the Mandelbrot
  232. set), the Mandelbrot orbit seems to concentrate around a single point (which
  233. point depends on where in the cardioid c is located). This point is called
  234. an attractor (of period one) for the orbit (outside the Mandelbrot set the
  235. attractor is said to be infinity). As c is moved further left into the
  236. biggest circle to the left of the cardioid, the orbit concentrates around
  237. two points instead of one, so we now have an attractor (of period two)
  238. consisting of two points. Moving to the left again, into the small circle
  239. attached to the big circle, the attractor splits up once more into four
  240. points (and thus becomes an attractor of period four). To the left of this
  241. little circle there is an even smaller circle, where the attractor consists
  242. of eight points (period eight), and to the left of this is a very small
  243. circle, so small it can't be seen on the picture, where the attractor
  244. consists of sixteen points (period sixteen). It goes on like this with
  245. smaller and smaller circles with attractors consisting of more and more
  246. points (period 32, 64, 128, and so on), until you reach a point where c
  247. approximately equals -1.401, where there will have been infinitely many
  248. circles, and thus the number of points in the attractor will be infinite. At
  249. this point the attractor is said to become chaotic, and it remains so for
  250. the rest of the points on the left tip of the Mandelbrot set, except for a
  251. few small regions where the attractor again consists of a few points (e.g. 6
  252. at -1.475, 5 at -1.625, and 3 at -1.755). The changes in the number of
  253. points in the attractor as c is changed are called bifurcations (for a more
  254. precise definition you could read the book 'Chaotic Dynamics' by G.L.Baker
  255. and J.P.Gollub, where a lot more is said about bifurcations) and this way of
  256. achieving chaos by an infinite series of bifurcations is in fact quite
  257. common. The usual way of displaying it is in a bifurcation diagram, also
  258. called a Feigenbaum diagram, with c (now only real) along one axis and the
  259. points of the attractor (also real) along the other axis. This could be done
  260. for the quadratic formula used in this program, but is more normally done
  261. with another quadratic formula which is related to the evolution of rabbit
  262. populations. The features are however the same except for the scale and the
  263. direction of change of c.
  264.  
  265. I have written a lot about what you can see (with a bit of imagination),
  266. however I want to emphasize, that there are many features of Julia sets that
  267. can not be seen with this program. The fine structure of some Julia sets is
  268. impossible to appreciate in the crude images obtained with the very limited
  269. accuracy of the code. Also the algorithm used to calculate the sets tends to
  270. plot many more points on the outer edges of the sets than on the innermost
  271. edges. In some cases this is so extreme that it might take as long as
  272. 10^3000 years or more before all pixels with points belonging to the Julia
  273. set had been plotted (by then the universe will probably have contracted to
  274. a singularity again or have expanded so much that the temperature will be
  275. approximately 10^-2989 K, which is very cold, and all the matter will have
  276. turned into black dwarf stars, neutron stars and black holes, most of which
  277. will have turned into radiation, unless the proton is unstable, in which
  278. case all the matter will have turned into radiation). So many of the
  279. features of Julia sets that change abruptly when changing the value of c
  280. just a little bit will be impossible to see with this program, though you
  281. can often get an idea that something has happened by watching the Mandelbrot
  282. orbits, as their behaviour will usually change at the same points as the
  283. Julia sets.
  284.  
  285. If you want to investigate Julia sets (and other fractals) more closely, I
  286. suggest you get some more programs. There are several in the Public Domain
  287. that will produce images of Julia sets in different ways. Some of the best
  288. programs are, in my opinion, !Mandy by Roger Attrill (an easy to use desktop
  289. program that makes Mandelbrot and Julia sets), !FracTrace by Carl Declerck
  290. (a multitasking program that produces 3-dimensional Mandelbrot and Julia
  291. sets), and particularly !Fractal primarily coded by Mike Curnow (it produces
  292. Mandelbrot and Julia sets for the quadratic and other formulas as well as
  293. Feigenbaum diagrams and many other fractals, with several different ways of
  294. plotting the images). At least some of these programs should be available
  295. from PD libraries - two of the programs are on the AFG 1991 disc which I
  296. know is available from some PD libraries.
  297.  
  298.  
  299. The inverse iteration method:
  300.  
  301. The program is based on the quadratic formula z(n+1)=z(n)^2+c, where z and c
  302. are complex numbers, however it uses the inverse iteration method to find
  303. points on the edge of the Julia sets. This method is described in 'The
  304. Beauty of Fractals' by H.-O. Peitgen and P.H. Richter, and also in many
  305. other books.
  306.  
  307. The inverse iteration method actually does the iteration the other way
  308. round:
  309.  
  310. z(n+1)=SQR(z(n)-c).
  311.  
  312. After a few initial iterations of this formula all the z's calculated can be
  313. plotted as they will be very close to the Julia set (the Julia set is an
  314. attractor for the mathematical mapping defined by the inverse iteration, or
  315. something like that).
  316.  
  317. However this iteration is not as easy as it looks because x and c are
  318. complex numbers and the calculation of the square root of a complex number
  319. is quite complicated (pun fully intended). In the following the complex
  320. number z is represented by two real numbers x and y, so that z=x+yi:
  321.  
  322. SQR(x+yi)=SQR(r)*COS(a/2)+i*SQR(r)*SIN(a/2),
  323.  
  324. where r=SQR(x*x+y*y)
  325.  
  326. and a=ASN(y/r) for x>=0 and a=PI-ASN(y/r) for x<0.
  327.  
  328. However a square root has two solutions and only one has been found by the
  329. above formula. The other one is simply the negative of the above (as for
  330. real numbers) and to avoid any bias in the calculations it is normal to
  331. select which root to use at random.
  332.  
  333. So the iteration is done by first calculating x(T)=x(n)-cR and y(T)=y(n)-cI,
  334. where x(T) and y(T) are temporary values used to calculate the square root
  335. and cR and cI are the real and imaginary parts of the constant c, then
  336. calculating r(T)=SQR(x(T)*x(T)+y(T)*y(T)), and SIN(a)=y(T)/r(T) and then
  337. making a table lookup which converts SIN(a) into the values of COS(a/2) and
  338. SIN(a/2) (if x(T)<0 then the sines and cosines are swapped). Finally the new
  339. value of r is calculated as r(n+1)=SQR(r(T)) and this is multiplied by the
  340. sines and cosines: x(n+1)=r(n+1)*COS(a/2) and y(n+1)=r(n+1)*SIN(a/2). If
  341. r(T)=0 - which rarely is the case - then the division and the table lookup
  342. is not performed. After all this, a random bit is produced which determines
  343. wether the other of the two roots should be used in which case there will be
  344. an additional two subtractions.
  345.  
  346. So apart from the table lookup there is one division, two square roots, four
  347. multiplications, and two or four subtractions (depending on which root is
  348. selected). I have omitted the addition from this list, because it can be
  349. integrated with one of the multiplications in ARM assembler. All these
  350. calculations are done with 32 bit fixed point arithmetic using 13 bits for
  351. the fractional part.
  352.  
  353. The points are plotted (by direct screen access) both in the position of the
  354. actual z value but also mirrored around 0+0i at -z (the other root) because
  355. Julia sets are symmetric around 0+0i.
  356.  
  357. Due to the speed of the ARM the program can plot approximately 10000 points
  358. per second, though during animation this is decreased a bit - particularly
  359. at the high framerates. If the machine code is allowed to plot a very large
  360. number of points before returning to basic it can actually plot in excess of
  361. 11500 points per second, but that is not possible with the current control
  362. program.
  363.  
  364.  
  365. Improvement history:
  366.  
  367. The first PD version was:
  368.  
  369. 1.00: It featured:
  370.       Julia sets (naturally) calculated in 'real time'.
  371.       Control via mouse or cursor keys, with three different step sizes.
  372.       Automatic animation (tracing the edge of the cardioid and the greatest
  373.         circle of the Mandelbrot set).
  374.       Random animation.
  375.       Some preset values of c.
  376.  
  377. However no one ever got to see it because I immediately made an alteration
  378. changing it into:
  379.  
  380. 1.10: The only difference from version 1.00 was that I changed from mode 13
  381. to mode 4 giving a significant increase in speed and higher resolution.
  382.  
  383. After that followed:
  384.  
  385. 1.50: This version has the same general appearance as version 1.10, but some
  386. errors have been removed, a few simple features that should have been in the
  387. first version have been added as well as some more interesting new features:
  388.       Mandelbrot orbits.
  389.       Background image of the Mandelbrot set (making a change from mode 4 to
  390.         mode 8 necessary giving a slight decrease in speed).
  391.       Hide option for the text (sort of screen saving as well as giving a
  392.         prettier picture).
  393.       Different framerates during animation.
  394.       Help screen.
  395.       Mouse pointer is seen at all times following c (if it is toggled on).
  396.       Bug in calculations removed (this caused strange points to appear with
  397.         certain values of c, such as c=i).
  398.       Code further optimized.
  399.       Arcus tangent changed to arcus sine giving greater accuracy and a
  400.         smaller table.
  401.       The two previous changes has resulted in a speed increase (of the
  402.         Julia set calculation) of 6.4%!
  403.       Automatic timing to adjust the program to the speed of the machine
  404.         (with the unfortunate result, that an ARM2 machine probably won't
  405.          plot quite as many points per second as with the first version,
  406.          however with an ARM3 I think it should be an advantage - I have
  407.          not had a chance to see this).
  408.  
  409. This was very fine but based on my experiences from version 1.10 (which I
  410. thought was horribly out-dated a few weeks after I had sent it around) I
  411. decided to postpone the release for about a week by which time I had made:
  412.  
  413. 1.51: This only contains small refinements from version 1.50.
  414.  
  415. A few people got this and I then made:
  416.  
  417. 1.52: This is virtually the same as 1.51 - only I would know the difference.
  418.  
  419.  
  420. Possible future improvements:
  421.  
  422. There are of course many possible future improvements, though many of these
  423. are not of great interest from a fractal viewpoint:
  424.  
  425. I would like to make a multi-tasking front-end for the program with some
  426. nice menus for selecting the different options (the keystrokes needed to
  427. control this version reminds me a bit too much of FRACTINT for IBM PC's, and
  428. if I add too many extra features, it will not only become almost impossible
  429. to remember the keys, but the help screen will have to be extended to more
  430. than one screen). However before doing so I will probably try to learn C and
  431. convert this program to that language, with the added advantage, that the
  432. control part of the program will take up less processing time.
  433.  
  434. Some of the features of this version of the program need some improvement.
  435. For instance the automatic timing is not very accurate, and could definitely
  436. benefit from some improving. This will primarily result in more points being
  437. plotted on each image at the high frame rates. It would also be nice if the
  438. Mandelbrot orbits were in some other colour than the Julia sets.
  439.  
  440. Different ways of defining your own automatic animations is also part of my
  441. ideas for the future. I have already tried some ways, but they don't work
  442. right, so I will have to sort out some problems before you get to see them
  443. (the animations - not the problems).
  444.  
  445. Of greater interest from a fractal viewpoint, is some way of producing high
  446. quality still images of the Julia sets made by a modified version of the
  447. inverse iteration method. This is not very hard to do, however the
  448. requirements for memory (a big array and a very large stack) are very great
  449. and slightly unpredictable, which means that it needs some sort of flexible
  450. memory management and effective error trapping if it is to be an integral
  451. part of this program - C and a Programmers Reference Manual will probably
  452. help, once I get it.
  453.  
  454. The program as it is only makes quadratic Julia sets. But there are other
  455. Julia sets than these, some of which might be interesting to animate.
  456. However the problem is that each kind of Julia set would require its own
  457. piece of machine code including tables and other stuff written specially for
  458. that type in order to get as great a speed as possible, so, even if I ever
  459. add any extra types to the program, there will, I think, never be many of
  460. them.
  461.  
  462. To round off I have some more crazy ideas such as Animated Julia sets as a
  463. desktop background (giving some deep insight in the relation between the
  464. quadratic formula and the movement of the mouse in a working session), or as
  465. a screen saver for the desktop. I might even write a PC version.
  466.  
  467. However most of this lies far in the future as I make lots of other things
  468. besides Julia sets!
  469.  
  470.  
  471. Acknowledgments:
  472.  
  473. Without the help and suggestions of various people this program would never
  474. have been, or at least would not have had the features it's got. I would
  475. therefore like to thank Christian Larsen for making a machine code sine and
  476. cosine table lookup routine, which gave me the idea for this program and
  477. formed part of the machine code of the first version.
  478.  
  479. I am most grateful to Rasmus Roland for giving me the idea of the automatic
  480. animation around the edge of the cardioid and reminding me of putting an
  481. image of the Mandelbrot set in the background.
  482.  
  483. Some credit is due to the authors of FRACTINT (for the IBM PC) - at least
  484. they who made the orbit option - for giving me the idea of Mandelbrot orbits
  485. (and for making a good program).
  486.  
  487. I also want to express my thanks to Mike Curnow for writing some great
  488. programs - particularly !Fractal - and for administrating the Archimedes
  489. Fractal Group.
  490.  
  491. Finally I would like to thank all those people who have had (to pretend) to
  492. listen to me when I kept on babbling about this program and phoning them at
  493. 2am to explain that I had just increased the speed by half a percent.
  494.  
  495.  
  496. Distribution:
  497.  
  498. This program is Public Domain! You may copy it freely (and please do) as
  499. long as you do not sell it for a profit or include it with a product that is
  500. sold for a profit (without my permission) and as long as you do not change
  501. or delete any of the original files which are:
  502.  
  503.     !JuliaAnim (not really a file),
  504.     !JuliaAnim.!Boot,
  505.     !JuliaAnim.!Help (this file),
  506.     !JuliaAnim.!Run,
  507.     !JuliaAnim.!RunImage,
  508.     !JuliaAnim.!Sprites,
  509.     !JuliaAnim.mc.
  510.  
  511. To obtain future versions of this program (do NOT expect any before the
  512. summer of 1993) you could try some Public Domain Library, I will at least be
  513. sending new versions to some of the ones listed below (all of which are
  514. allowed to distribute this program - if any other libraries wish to be
  515. included on this list, they only have to ask, though I can't guarantee that
  516. they will get new versions sent automatically - it's terribly expensive):
  517.  
  518.     APDL, 96 Lanehouse Road, Thornaby, Cleveland, TS17 8EA,
  519.     Arcaynia PD, PO Box 1927, Sutton Coldfield, B74 3PE,
  520.     Diamond PD, 86 Meadowbank, Moor Lane, Holyway, Holywell, Clywd CH8 7EF,
  521.     DataStream, 32 Hollinwell Avenue, Nottingham, NG8 1JZ,
  522.     Skyfall, PO Box 2220, Birmingham, B43 5RZ.
  523.  
  524. Also I will probably send new versions to some of these magazines:
  525.  
  526.     Acorn User,
  527.     Archimedes World,
  528.     The Micro User (or Acorn Computing if you like).
  529.  
  530. They are all welcome to publish it on subscription disks (or, preferably
  531. with my permission, cover disks), or just mention it in an article (I'm only
  532. doing all this to become famous) as long as it remains perfectly clear that
  533. it is Public Domain (otherwise they would have to pay me lots of money -
  534. which of course everyone is welcome to do anyway)!
  535.  
  536. As a last resort it is possible to get the newest version from me, however
  537. sending SAE's with discs to foreign countries isn't the easiest thing to do
  538. (the cost of the international reply coupons alone, I believe, would be
  539. about £2 - alternatively a formatted disc and addressed envelope with a
  540. large cheque (£10 or so - it costs £4 just to cash it) might help). Remember
  541. to state which version you have and I won't send anything before a major
  542. development has occurred. This is risky as you can't be sure that there will
  543. ever be another major development (read: I'll put the postage money in my
  544. pocket, store pictures on the disc and burn your address).
  545.  
  546.  
  547. For fractal programmers:
  548.  
  549. If you are making fractal programs yourself, or are planning to make some, I
  550. suggest that you contact:
  551.     Mike Curnow, the administrator of:
  552.     Archimedes Fractal Group, 30 Bowen Drive, West Dulwich, London SE21 8PN.
  553. He might be able to help you or put you in contact with other fractal
  554. programmers. Remember to include an SAE with correspondance to AFG.
  555.  
  556.  
  557. Finally:
  558.  
  559. If you have any suggestions for improvements to this program or have written
  560. some interesting fractal program yourself which you want to tell me about or
  561. just want to tell me what a great program you think !JuliaAnim is then you
  562. can contact me by writing to:
  563.  
  564.                                         Ivar Wind Skovgaard,
  565.                                         Havsgårdsvej 27,
  566.                                         2900 Hellerup,
  567.                                         Denmark.
  568.