Avariant (in ea.ufm) Avariant is provided in both the M(andebrot) and the J(ulia) version. All options described here can be applied to the M- and the J-version but it's always wise to start in the M-version and then to switch to the J-version from the selected point in the M-plane. The formulas, as given here, are not mathematically new. Indeed two of the features used in each of the ufm’s are not original. The basic principles are: 1. Every iteration combines two different mathematical formulas. We can see this elsewhere in UF, e.g. in some files in jam2.ufm. The Japanese fractal software ‘Flight from Fractals’ and ‘Raimuraito’, also have two formulas working together. 2. A procedure to reduce the amount of inevitable spirals in Mandelbrot- and especially in Juliafractals, as described by Albert Smooks*). This has consequences: instead of spirals we get curves of rupture – one or more axes of symmetry with similar images on both sides. The curved nature of these axes may obscure the symmetries but you will often get surprising results. The two formulas we use in every iteration are indicated as A and B in the layer properties. They each have four modules: a. The Mandelbrot/Julia formula and related polynoms. This and the next two modules have four sub variants with respectively 1, 2, 3 and 4 z terms. These sub variants are accessed by checking the ‘Non-standard’ box where a choice is made within the Polynoms section. Additional to the number of z terms there is always a term with c in it. Thus a 3 z term selection will give 3 z terms + 1 c term. The c term is shown as a function (above the Polynoms heading), but functions are selectable for any of the z terms though the default is always ‘ident.” b. The formula of the French mathematician Samuel Lattes as explored by Benoit Mandelbrot and published by him in 1980. Mandelbrot was able to simplify the formula into the form known today by his name (the Mandelbrot formula**). I have used the Lattes formula in a somewhat more general shape. c. The Talis formula, taken from ‘Fractal Explorer’. This too has been given a more general shape***. d. the fourth module (Combi z&c) is also based on a polynom. Selection of this module makes three terms available as a unit as shown in the drop down section ‘z&c.” These are respectively: 1, z only; 2, z & c combined; 3, c only. N.B. Explanations of ‘c’ and ‘z’ may be found by studying the fractals literature in Wikipedia or elsewhere on the Internet. You also can find details in the UF help file under ‘type setting’. When combining formulas A and B different modules can be used within each. You are also able to vary the way they interact with each other by changing the ‘decider’ (the decider is found within the General section). Formula B is disabled when the decider = 0, in this case only formula A is active.. If decider = 1, at each iteration the formulas calculate in series, provided ‘parallel’ is not enabled; with formula A being followed by formula B. Formulas A and B can be set to work in series or in parallel. When parallel is unchecked and the decider = 1, at each iteration formula A calculates to be followed by formula B. The formulas work in series, but there are several options. One such scheme for the iteration in series is: z1 --> by A --> z2 --> by B --> z3, Here z3 is the initial value for the next iteration. When ‘series options’ are at ‘normal’, then z2 only is an intermediate station. If it is at ‘var 1’ then the initial value for the next iteration is the real part of z2, combined with the imaginary part of z3. However at ‘var 2’, the real part of z1 is combined with the imaginary part of end value z3. When parallel is enabled the ‘series options’ is renamed as ‘parallel options’ and the drop-down box makes additional choices available. The scheme is as follows: z1 --> by A --> z2, and z1 ––> by B --> z3. The actions of both formulas are in fact parallel and mutually independent. The result of both are z2 and z3 and both have to be combined in one or another way to give a value z as a starting point for the next iteration. For this joining there are many possibilities. We give here 11 possibilities: ‘sum’, ‘product’, ‘difference 1 en 2’, ’quotient 1 en 2’, arithmetic, geometric and harmonic mean, together with the two options previously available when ‘in series’. Of course not all these possibilities provide usable images in all cases. It’s also possible to adjust the ‘decider’ at other values than 0 or 1. For instance at decider = 3, then iterations #1 and #2 are only carried out by formula A. At iteration #3 both A and B are carried out, but iterations #4 and #5 use formula A, then #6 with both, and so on. So when the 'decider' is not zero the rule is: If the number of the current iteration, divided by the decider as specified is an integer, then both formulas A and B are executed. If this quotient is not an integer, then only formula A is executed, and in this current iteration formula B is ignored. As stated previously ‘decider’ is found under the ‘General’ heading, where you will also find the ‘bail-out’ value and the different adjustable bail-out types. Modules ‘Mandelbrot’, ‘Lattes’, and ‘Talis’ are default in their most simple ‘normal ’shape, we only can change the power of z (not for Lattes), and at Talis we also can adjust the Talis constant. When ‘non-standard’ is chosen for any of the first three modules, the Smooks option also becomes available. However, module 4 is inherently non-standard, so here the choice of Smooks options is always present. Smooks operations. A short survey of Smook’s method may be of assistance and particularly to those with some familiarity with the mathematical terms used in the construction of fractals. It only uses functions already available in UF, particularly abs(). During every iteration the position of z is controlled by the parameters set. In the simplest case z remains in the first quadrant of the complex plane (the north east part of the image) when both the real part and the imaginary part are positive. When the orbit of z comes outside the NE part, the function abs() will act and place z back in the NE part. In that case z will be reflected in relation to the real or/and imaginary axis, so the natural building up of the spiral(?) will be disturbed. In this basic example the NE quadrant is passive and the others active. Of course it’s also possible to divide the complex plane in other ways. In Avariant this idea has been worked out in the following six modes. First a remark on the complex plane of our image. The centre point is 0/0, the half line to the east at 0 degrees, to the north at 90 degrees, to the west at 180 degrees, to the south at 270 degrees. The maximum angle of 360 degrees coincides with 0 degrees on the half-line to the east. (In math, the positive direction is anti clockwise.) A brief description of the six modes follows, but it isn’t necessary to know the how they function to produce effective results. The modes can be applied intuitively. If modus ‘none’, then no Smooks operations will take place. Only partial scaling is possible as we'll describe later on. Modus ‘original smooks’, the basic situation according to Smook. Modus ‘3 segments’. First we have to adjust an angle alpha between 90 degrees and 360 degrees (default 360 degrees). This angle divides the originally active area (NW, SW, and SE) into two zones, the first one from 90 degrees to alpha. The second from alpha to 360 degrees. We distinguish the NO quadrant segment I, segment II the zone from 90 degrees to alpha, and segment III from alpha to 360 degrees. There are two submodi: ‘disabled’: segments I and III passive, and II active. The second one, 'enabled': I and II are passive and III active. Modus ‘4 segments’. Two angles have to be adjusted: angle alpha > 90 degrees and smaller than beta. So this second one, beta must be higher than alpha and its maximum is 360 degrees. Default: alpha 90 degrees, beta 270 degrees. To simplify the adjustment with the ‘fractal explorer tool’, both angles are combined into one complex number, gamma. Angle alpha is the real part of gamma, beta is the imaginary part. Segment I again is the NO quadrant, segment II the zone between 90 degrees and alpha, segment III between alpha and beta, and segment IV from beta to 360 degrees. Here too, there are two sub modes: 'disabled': segments I and III passive, II and IV active. In sub mode 'enabled' segments I, II and IV are passive and segment III active. In mode ‘S to N ’, all values of the orbit in the southern hemisphere are reflected to the north; in mode ‘W to E refl.’, the same with orbit values in the west, they are reflected to the east. After every iteration, when a Smooks operation takes place it will be finished by the ‘flipper question’. Parameter ‘flipper’ can be adjusted at ‘none’, ‘only north west’, and ‘all’. At ‘north east’, for all points of the orbit in this quadrant the real and imaginary components will be changed. If ‘flipper’ = ‘all’, the same occurs for every point of the orbit. Flipping, the change of the real and imaginary component of z, means a reflection to the angle of 45 degrees to the real axis. These modes greatly enhance the original suggestion of Smooks, although he had already indicated that more variations are possible. In Avariant there also is another way to apply his idea: Smooks uses the function abs() for the total value of the orbit point z, but it is also possible to apply it only on a part of z. In module a (Mandelbrot polynoms) and d (blended polynoms) z consists of a number of terms which can be split up and combined in several ways. So when we have a function z = a1(z) + a2(z) + a3(z) + c, then it can be split up in a part u and v, for instance u = a1(z) + a2(z) en v = a3(z) + c. We use u to carry out the Smooks operations but we don’t do that on part v. Afterwards we combine both u and v into one complex value z as a starting point for the next iteration. For both other modules the practice can be similar. Lattes has a fraction and Talis has two terms, one of them a fraction. It’s possible to apply Smooks on the total fraction, or only on the numerator or denominator separately. The last variations are indicated in Avariant as ‘allocation’. When it is ‘all’, then we use the whole z value. The other options, ‘part 1’, ‘part 2’, etc. only work on the split part u. The remaining part, v, isn't changed. Even when no Smooks operations are applied it is useful to have the facility to split z into u and v. In that case of course it’s not necessary to have the Smooks option enabled. When we choose under ‘allocation’ another option than ‘all’, then a parameter ‘partial scale’ appears. This is a (complex) scaling factor that only works on the allocated part u, and not on part v of the total z. The effect of Smooks operations is at first sight somewhat disappointing. The beautiful Mandelbrot set for instance is seriously deformed, just as Picasso in certain periods distorted the human form. At least half of the coastline changes from a beautiful Norwegian fjord coast into a dull, plain, sand beach. At other places we see amounts of pixels smeared out as unusable smudge, and possibly only some devotees of ‘modern art’ can use them. Other parts look as landscapes, seen from a plane, with strange perspectives. Using built in UF-functions as ‘stretch’ and ‘skew’, it will be possible to use them. But at some spots of the new coast line we’ll see elaborate structures with curved axes of symmetry, mentioned earlier. Spirals are absent or rarely present there. It’s easy to find these useful areas. They provide a wonderful basis for creating fractal art, using Ultra Fractal ucl-files and gradients. In all cases it’s possible to work in the normal way to find Julia fractals, using the Mandelbrot set as a map. It’s a remarkable thing that even the dullest parts of the 'deteriorated’ Mandelbrot set often will give useful Julia’s. A final word In Avariant we have 4 modules and with this limited amount innumerable variations will be possible. Nevertheless it’s easy to add other modules with new mathematical formulas. It isn’t sensible to make them too complicated for the calculation times would become too long and unduly extend screen rendering times as parameters are changed – including those caused by changing ucl’s and gradients. Other effects are possible: for instance it is possible to change the scale of formula A in relation to B by ‘overall scale A’. Such a parameter is lacking for formula B, as it isn’t necessary there. Also we didn’t mention details of the individual modules, most of them are obvious and it will be easy for you to make effective use of the options available.. *) http://orbittrap.blogspot.com/2007_08_01_archive.html (Aug. 4, 2007) **) B. Mandelbrot describes this interesting story in The Beauty of Fractals’ of H-.O. Peitgen and P.H. Richter (1986) p.151-160. ***) Also in the Talis formula more variations are possible. They have been extensively worked out by Tony Marshall in his ‘Talis and Friends’ (tma2.ufm). Maybe it's possible to implement some of these variations in a later update of Avariant. Acknowledgement Thanks to Cliff Tolputt for his kind positive critical remarks and his corrections on my broken English. ============================================================================================================================================== Barnsley DeLuxe and BarnsleyTechno (in ea.ufm) 1. Intro 2. Short history 3, Principle 4. Input c's 5. Decision 6. Hi and Lo branch 7. Bailout 8. M-version 9. The original Barnsley types I, II, and III 10. Note 11. Examples 12. Acknowledgements 1. Intro In Barnsley DeLuxe some of my own ideas are combined with those of other authors. Nevertheless I know that also other Barnsley variations can be found in the individual ufm's of the UF database. DeLuxe only gives de Julia version of Barnsley's decision formula, BarnsleyTechno is a subset of DeLuxe, so it has less possibilities than DeLuxe, but in Techno we see both sides of the coin: Julia and Mandelbrot. The code has been written in 'old style' code, no facilities of UF5 are used, that's why the title is Barnsley DeLuxe UF4. It works in all versions, UF 3, 4 and 5. 2. Short history. Michael F. Barnsley describes in his book "Fractals Everywhere" (1988/1993) the "IFS" concept. It involves more than 90% of the text, but he also mentioned another fractal system: 'decision' escape fractals. Tim Wegner and Bert Tyler apply the latter type in their FractInt software in "BarnsleyM" and "BarnsleyJ", type I, II, and III (1991), followed by a.o. Frederik Slijkerman (Formulas\Compatibility\Fractint.ufm), and others. In Ultra Fractal there is a number of formula authors using this FractInt Barnsley concept: Klaus-Peter Kubik, Dan Kuzmenka, Eric Reckase, Gilles Nadeau, Michèle Dessureault, Mark Townsend, Olivier Steiger, Ron Barnett, Toby Marshall, and others. Among them also Samuel Monnier in sam.ufm, wih his "IFS-Barnsley" formula (which is in essence no IFS). Jock Cooper enhanced this formula in: "IFS-Barnsley+jockIII", in jock.ufm. BarnsleyDeLuxe (ea.ufm) is based on the work of Monnier and Cooper. The bailout options are from Michèle Dessureault's "md-barnsley-imj" (mde.ufm), and some extra options are taken from Olivier Steiger's Barnsley ufm's. It's not my intention to replace Jock's ufm, nor other ufm's, but only to introduce a number of new possibilities, some based on work of other authors. 3. Principle of a Decision (Escape) Fractal. We all know that during an iteration process, in every cycle, z is changing. At every iteration from z a specific real number r is calculated and then compared with a choosen parameter, the "critical value". If r is higher than that parameter, then the next iteration is follows the "Hi" branch, if not then it goes "Lo". In Barnsley's original concept the differences between the Hi and the Lo branch were only slight ones . Later on Monnier and Cooper added new options, different in both branches. We now have two formulas in these branches, each with distinguished Julia constants. In the "normal" Mandelbrot/Julia concept we have only one iteration formula, with one Julia constant c (in a J this c is constant, in a M, c depends on the pixel value). Also in the decision formulas of Barnsley's Julias there only was one c value. In the original work of Barnsley, Wegner and Tyler, the critical value always is zero, Monnier introduced the adjustable real parameter "critical value". Of course there are different possibilities to derive a real number out of a complex one, most obvious is to take the real or the imaginary value of z, but there are many more choises possible. 4. Input of the Julia constants c. In a "normal" M/J fractal, using only one formula there also is only one complex c. The same was in the original Barnsley decision formula and it could easily been adjusted, using the Explorer Tool (in UF4 or UF5). In our case, with two complex c-values it's somewhat more complicated. In Barnsley DeLuxe there are 4 options: 4.1. Directly Both for the Hi and the Lo branch the c values are choosen independently: real(c1), imag(c1), real(c2), and imag(c2). 4.2. Via Functions It's the way both Monnier and Cooper did apply. Only one fictive pseudo c: "b-seed" is choosen. From this b-seed, c1 and c2 are calculated via functions. When we use the same function for Hi and Lo, then c1 = c2, but when we use different functions,then c1 is not the same as c2. 4.3. Techno (default) This is a very specific case in which imag(c1) = 0 and real(c2) = 0. so only two components remain: real(c1) and imag(c2), which are provided via the complex "t-seed". In this option the horizontal and vertical lines and structures in the fractal are emphasized. 4.4. Original This is the way used by Barnsley, Wegner and Tyler: c1 = c2, the "original (Barnsley) seed". 5. Decision The decision between Hi and Lo after every interation depends of: 5.1. The adjustment of the critical value. In cases we get a black plane, it often is sufficient to change this parameter. Anyhow, the graphical result always depends strongly of this parameter. 5.2. The way of calculating the real number r from z. In principle there are infinite ways to do so, in Barnsley DeLuxe there are (arbitrarily) 37 modes available, among them 12 alternating modes. In the latter ones, during sucessive iterations, every time two different calculations are made. In the Monnier/Cooper formulas there only is one alternating mode. 5.3. Function mode To enhance the number of options, the possibility has been added to apply not only r as such, but also as a function of r. In the case of alternating modes (see 5.2.) there also is an extra option: the Alternate Function Mode. 5.4. Mode scaling A scaling with one or more factors in a particular mode formula. 6. Hi and the Lo branch. In both branches the same options are available: 6.1. Math formula 6.1.1. main - Based on the orginal Barnsley I and II formula 6.1.2. jocks - A variation of Jock Cooper 6.1.3. deviant - Variation in which c acts as a vector 6.1.4. type III - FractInt Barnsley type III 6.1.5. alt - A Barnsley variation as e.g. in alt.ufm, c acting as a power 6.2. Steiger variant Dr. Steiger introduced some modifications of the original Barnsley formula: 'parabolic', 'gaussian', and 'sine'. They can be applied in all cases of (6.1.) Default is 'none', then all Steiger variants are disabled. 6.3. Primary Function The function used in the iteration formula. 6.4. Primary Parameter A parameter, used in the iteration formula 6.5. Flight If Flight is enabled then c is no longer a constant. At every iteration it will be shifted over a constant value, and that of course does influence the calculated z. The amount of the c-shift to be adjusted by the Flight Parameter. (The flight option doesn't work when mode = type II). 6.6. Operator The operator manipulates z in every cycle. Four options: 'none', '+' (plus), '*' (multiply), and '^' (power). Subtraction can be applied by adding (+) a negative number. By activating 'invert' the options 'multiply' and 'power' are changed into 'divide' and 'root'. Default: 'none'. When another operator option is activated a new option appears: 6.7. Skip cycles Number of first cycles for which the operator action will be skipped. Default: 0, no skipping; 1 = only the first cycle skipped, etc. It's about the same as Olivier Steiger's "glueing". He describes it as "glueing makes the loop algorithm skip [the operator action of] the first iteration, because for many .ucl the first step is of special importance. This may remove also some 'splitting edges' (of the ucl.s)". Note: When you don't want an operator action, but you'll still use the possibility of a secondary function (6.8.), with, or without 'glueing', you can for instance activate 'Operator' by the option '+' (6.6), and use for the secondary parameter (6.8.) the complex value = (0/0). 6.8. Secondary Function The result of the iteration can be modified by an arithmetic operation (6.6.), a glueing option (6.7.), and afterwards a second function can be taken, the secundary one. 6.9. Secundary parameter Works together with the operator in (6.6). 6.10. Power Although in most cases this power will be 1/0, the possibility is offered to change this parameter. 7. Bailout Most Barnsley software routines have only one bailout option: mod = square modulus (|z|), but some have more (Dessureault, Kubik, Kuzmenka, Steiger). In Barnsley DeLuxe mainly the procedure given by Michèle Dessureault has been followed. Three parameters: 7.1. Bailout Test (16 options, default: 'mod') 7.2. Bailout Function (The same as the "Goofy functions" of Steiger) (8 options, default: 'ident') 7.3. Bailout Value as usual, (default: 1000) 8. Mandelbrot version In Barnsley DeLuxe are four, in stead of the more usual two components of c, so it's not possible to apply a switch for this Julia version into one Mandelbrot, there's more than one M's possible. Most BarnsleyM pictures are not very interesting from an artistic point of view, and further, the switch isn't really necessary. You can find out the most interesting values of c, using the Explorer Tool of UF4/UF5. In fact the Explorer Tool window of a c is a M-plane, but an empty one and that's a pity, we don't see the M-structures in this plane, so finding optimal values of c's is less easy than with the usual switch tool. In the subset BarnsleyTechnoJ, there only is one (pseudo) c, so here a M version could be written: BarnsleyTechnoM. It's a confirmation of my statement before, the M pictures are in my opinion unfit for "fractal art", but very useful as a map of Julia's, for searching interesting possibilities. 9. Original Barnsley types I, II, and III Barnsley DeLuxe has been written with Jock Cooper's "mechanical gallery" in mind (http://www.fractal-recursions.com/). But it's also possible to make traditional Barnsley pictures as given in FractInt. The data for the three main types: ---------------------------------------------------------------------- Data for the original 3 Barnsley types from FractInt (Tim Wegner c.s.) ---------------------------------------------------------------------- type I type II type III maxiter 149 149 149 General mode real type II real function mode ident ident ident scale parameter 1 1/1 1 critical value 0 0 0 input original original original recommended start seed 0.6/1.1 0.6/1.1 0.1/0.36 *) bailout test mod mod mod bailout function ident ident ident bailout value 4 4 4 Hi formula main main type III Steiger variant none none none types III variant --- --- c inactive primary function ident ident ident primary vector -1/0 -1/0 -1/0 operator none none none skip cycles 0 0 0 sec. function ident ident ident power 1/0 1/0 2/0 Lo formula main main type III Steiger variant none none none types III variant -- -- real primary function ident ident ident primary vector 1/0 1/0 -1/0 operator none none none skip cycles 0 0 0 sec. function ident ident ident power 1/0 1/0 2/0 ---------------------------------------------------------------------- *) The image is exact the same as Slijkerman's Barnsley 3 (Julia) in Fractint/ufm. The image in T.Wegner c.s., "Fractals For Windows" (1992) is different, more in the neighborhood of a start seed = (0.4/0.0). 10. Note Maybe a superfluous remark but nevertheless a useful one. To explore the action of each option you can make a two identical layers, including identity in gradient and the position of it. Then in Layer Properties, choose for the upper one 'difference', and for the bottom one 'normal', giving a black window. By changing a parameter or option in one of both layers you can easily detect the effect. Change always only one parameter or option, not more than one. When Exploring the effects it is often useful or even necessary to use another ucl than the 'normal' Smooth(Mandelbrot), e.g. one of the Orbit Traps options in standard.ucl. Of course this remark is a general one, not only useful for this Barnsley DeLuxe formula. 11. Examples 12. Acknowledgements My thanks for using the results of my predecessors: Samuel Monnier and Jock Cooper (for the general concept), Michèle Dessureault (bailout options), Dr. Olivier Steiger (goofy function, glueing options and Steiger formula variants) and all others, including Janet Parke and Kerry Mitchell for their wise lessons. At last, not to forget, thanks to the intiator of the whole 'decision' concept, Prof. Dr. Michael F. Barnsley. ============================================================================================================================================== Lucky, a Ducky special I. Lucky as such Lucky doesn't use new formulas, it uses existing codes, with some small variations in the way the iterations are carried out. They often give interesting symmetrical patterns. Although there are many self-similarities, I don't think all these results are fractals in a math sense, some are, others not or are doubtful. First of all some definition. When I speak of a 'formula', I mean a maths formula, without conditional requirements. If conditions are present, I speak of a 'script' or 'code'. So UF consists of mapping, fractal and coloring scripts. The math formula only has standard functions and parameters. Lucky is a subset of Ducky (the latter has been baptized in such way by Elias Rain). The well known mushroom/parachute pattern of Ducky is not its main characteristic. The real one is the interrupted orbit. Every time the argument of the points of an orbit exceeds the limit of 90 degrees (p/2 radians) it will be put back by the abs function. In graphics it means that it will be mirrored in relation to the vertical axis (where Im(z) = 0), so that it will be thrown back into the first quadrant. Thus it becomes clear that the 'natural' spiral structure will be disturbed and that the resulting shape of orbit points soon will be very difficult. The specialty of a Lucky is that some iterations will follow a different pathway. We restrict ourselves to two possible pathways, each with different parameters or even with different basic functions. The Lucky script has been split into two parts: a first and a second code. In the default mode ('series'), 'first-second separated' unselected, every iteration will follow either path 1 or path 2, depending on parameters 'main condition'. The following examples (with the option 'variant' off) may clarify how it works: If 'main condition' = 'below', and primairy choice 'lo' = 10, iterations 1 to 9 will follow code I, and iterations 10 to #maxiter code II, If 'main condition' = 'equal', and primairy choice 'lo' = 10, iteration 10 will follow code I, all others code II, If 'main condition' = 'between', and primairy choice 'lo' = 10, 'hi' = 15, iteration 11, 12, 13 and 14 will follow code I, all others code II, If 'main condition' = 'above or equal', and choice 'lo' = 10, iteration 1 to 10 (including 10) follow code I, 11 and higher code II, If 'main condition' = 'not equal', and choice 'lo' = 10, iteration 10 will follow code II, all other iterations code I, and at last, Finally if 'main condition' = 'outside', and choice 'lo' = 10, 'hi' = 15, then iteration 10, 11, 12, 13, 14 and 15 will follow code II, all other iterations follow code I. In the case where 'first-second separated' is selected the coupling between code I and code II has been broken and both codes have their own 'main code', 'lo' and 'hi' parameters. Note: The sequence of both codes differ because the successive options are complementary : For code I: Below 'lo' Equal to 'lo' Higher than 'lo' and lower than 'hi' Higher than 'lo' or equal to 'lo' Unequal to 'lo' Below 'lo' or higher than 'hi' For code II each case is complementary to the corresponding one of code I: Higher than 'lo' or equal to 'lo' Unequal to 'lo' Below 'lo' , equal to 'lo', equal to 'hi' or higher than 'hi' Below 'lo' Equal to 'lo' Higher than or equal to 'lo' and lower than or equal to 'hi'. In all cases there is an extra variation possibility, with 'variant' selected. We illustrate the difference between both options of 'variant' with an example. It uses an intern variable: 'counter'. Parameters: 'mode' = series, 'lo' = 5, maxiter = 32, 'variant' switched off: iter# 1, 2, 3, 4, code I counter 1, 2, 3, 4, iter# 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, code II counter 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 iter# 16, 17, 18, 19, 20, 21, 22, 23, code II counter 16, 17, 18, 19, 20, 21, 22, 23 iter# 24, 25, 26, 27, 28, 29, 30, 31, code II counter 24, 25, 26, 27, 28, 29, 30, 31 iter# 32 stop iteration counter 32 When button 'variant' is switched on, a new parameter appears: 'end'. Now. with the same parameters, and parameter 'end' = 12: iter# 1, 2, 3, 4, code I counter 1, 2, 3, 4, iter# 5, 6, 7, 8, 9, 10, 11, code II counter 5, 6, 7, 8, 9, 10, 11, iter# 12, 13, 14, 15, 16, code I counter 12 -> 0 1, 2, 3, 4 iter# 17, 18, 19, 20, 21, 22, 23, code II counter 5, 6, 7, 8, 9, 10, 11 iter# 24, 25, 26, 27, 28, code I counter 12 -> 0, 1, 2, 3, 4 iter# 29, 30, 31, code II counter 5, 6, 7 iter# 32 stop iteration counter 32 With 'first-second separated' on, both main conditions and also 'lo' and 'hi' are separately adjusted, so it is a possibility that there will be some dummy iterations. In this instance the "calculated" z is the same as the z at the start of this particular iteration. In these cases only the 'inside' or 'outside' code will be executed, changing the value of z. Modes So far the default mode, 'series'. There are three other modes: 'only code I', 'only code II', and both codes parallel. In fact both modes 'only code I' and 'only code II' are identical, but due to the organization of the script, both modes can provide different results. The last mode is different. Codes I and II are calculated separately and after each iteration both values are combined. For the possibilities of combining both branches, see the paragraph at the end of this chapter: 'Mixing of parallel calculated branches'. Formulas Only two Ducky formulas have been applied, the original Ducky Lite (ea.ufm) and some Talis formulas. A survey of the options: 1. asinh 2. log 3. Talis options: 3.1. original Talis 3.2. var.1 3.3. var.2 3.4.var.3 3.5.Duckytalis 4. general function 5. mix: asinh & function 6. mix: log & function 7. mix: Talis (and variations) & function 8. mix of 2 functions 9. function of a function 10. sum of 2 functions 11. product of 2 functions 12. ratio of 2 functions 13. 28 ways of combining 2 functions Option 3.1-3.4 are the Talis formulas from Fractal Explorer Option 3.5 is Danny van den Berghe's one from vdb.ufm Option 9 – 12 are suggested by Kerry Mitchell in his formula writing course. In the four mixing formulas 5 – 8, the influence of both components can be controlled by parameter '% mixing'. Option 13 are different means and other variations, the same as mentioned in 'Mixing of parallel calculated branches' and under 'precoloring'. Ducky Lite (option 4) (with 1 function) and its relatives (options 1 and 2) have no further parameters. Duckytalis has 4 parameters: Duckytalis function, variation function, Duckytalis power, and the variation factor. Lucky procedure During every iteration that satisfies the main condition, two steps have to be carried out. Preparation to offer z to the fractal formula z ---> z', and calculation of the fractal formula, including when desired, the addition of a vector, z' ---> z '' ad 1) z ---> z' This first step is an essential for the Ducky procedure. There are no parameters. The only purpose is to start from the first quadrant. Each starting z will be brought into the first quadrant by function abs: z = abs(z). ad 2) z' ---> z '' Calculation of the fractal formula have already been described under 'Formulas'. There are two options: 1. 'alternative' off (unticked) If the particular iteration satisfies the condition the fractal calculation takes place When 'vector?' is selected, a vector #1 may be applied; if the condition is nor satisfied, with 'vector?' selected, another vector#2 may be applied. After all operations, the Julia vector is added. 2. 'alternative' on (ticked) In all cases (if the particular iteration satisfies the condition or not), the fractal calculation takes place, inclusive the addition of the Julia vector. Then, if the iteration satisfies the condition, with 'vector?' selected, vector#1 may be added. When it doesn't satisfy the condition, with 'vector?' selected, vector#2 may be added. After the fractal calculation, when the result is outside quadrant 1, it has to be brought again into it. With 'alternate' on it will take place after adding the Julia vector, default when 'alternate' unselected, it is before adding the Julia factor. There are two possibilities, default with button 'rotate back' off, mirroring by the function abs, with 'rotate back' on, it turns z over 90 degrees clockwise. Mixing of parallel calculated branches Combining the results in the case of mode 'Parallel'. Here are two steps: the preparation and the combination itself. In the case of mixing the more or less equivalent branches A and B, the preparation is less important. But as the same mixing function is used for 'prec#oloring' (see below), where both precolorings may be different, we will discuss it here. With 'Preparation' selectedon, it will be enabled. We see then a button 'Modification of one branch?', 2 parameters: 'Branch Scaling', 'Imag Scaling', and another button: 'Branch Vector?' With selection 'Modification' off, only branch A will be treated. With selection mode 'Modification' on, only branch B. This treatment is a scaling of z, and a scaling of only the imaginary part of z of that particular branch. When selection mode 'branch vector?' is enabled, z of the particular branch will be subtracted from the number 1/0 (just one), but also we see a parameter 'const. '1'', default on Re = 1, Im = 0. This complex parameter can be changed. An example to clarify. For ease we do this with 'normal' numbers, not with complex ones. Suppose we have a z nearer to one than to zero, but we need the calculated results of z to be more in the neighborhood of 0 than in that of 1. In this case the cosinus function does not satisfy our wish, but the sinus function does, e.g. sin(0.1) = 0,0998, cos(0,1) = 0,9950. We see, the cosinus function gives values in the region of one (with one as its maximum). When we subtract cos(0,1) from a constant value one we get 1 – cos(0,1) = 0,0050, a number near to zero, so now it satisfies our wish. That's what 'const.'1' does. To enhance the possibilities, this parameter can be given other values by changing this parameter. For the combination of both branches there are 28 options. The first, 'spicy', one of both branches is the main one. But a small adjustable amount of the other branch may be added. The other 27 options can be divided into 'means' and other ways of combination. There are 17 'means' available. Not all are apllicable in all circumstances. For the meaning of these averages, see the descriptions in Wikipedia. The remaining 8 options are other than averages, the influence of each branch can be varied, not only from 0 to 100%, but also below zero or above 100%. In the case of a linear mix this means that one branch will be subtracted from the other. Some general remarks. As been said before, Lucky is a special form of Ducky, both are in most cases non-escaping formulas. So the 'bail out' criterium must be high enough to get the 'whole' picture. Mostly (but not always) the inside coloring is the more important than that in the outside region. Being non-escaping, the end of the iteration process is determined by the maxiter. The choice of a good maxiter is very important because of its influence on the end result. There is no optimal maxiter, different values will provide different results. When the adjusted maxiter is too high the result will be no fractal or fractal-like, but a plain gray plane. In many cases very low values of a maxiter give better results than high values (e.g. with function 'log'). The same is true for parameters 'lo', 'hi' and 'end'. Don't start with too high values, often 'lo' = 2 is often already interesting. Originally the Lucky concept is in the mode 'series', with buttons 'variant', 'alternative', 'first-second separated', and 'vectors?' off. We advise to use this default set as a starting point. II. Precoloring as an 'after treatment' The UF procedure has generally three steps: Mapping (optional) Construction of the fractal as such Inner and/or outer coloring. Here a fourth step has been added between 'construction' and 'coloring': the 'precoloring'. It's a kind of color transformation of the pixel which may influence the end result strongly. The idea is not new, it comes from 'Fractal Explorer'. Those who practice this software know it as '(additional) Transform'. The possibilities given in 'Fractal Explorer' are somewhat adapted and enhanced. We don't use the word 'Transfer' to avoid confusion with 'Mapping' or 'Transformation' in UF. In fact the 'precoloring', with its relatively large script, can be applied after almost every fractal script (or before almost every coloring). Maybe a task for other formula writers who are more acquainted with OOP. Besides 'no precoloring', there are 21 options, all using goniometric formulas. Some have 'joker' options, in a mathematical sense nonsense options, but in practice they sometimes can give interesting graphical results. If precoloring is applied it can be carried out in a single way or a second precoloring is possible. In case of two precolorings there are two options: series ('precoloring in series' selected) and parallel (unselected). In the parallel mode there are the same possibilities to combine as we saw earlier for codes, and again there are the same 28 ways of combination (see description earlier given in 'Mixing of parallel calculated branches'). With thanks to: Kerry Mitchell, Elias Rain, Jennifer Stewart, Danny van den Berghe (for his fiat to use his Duckytalis formula), Beesknees67 (Kim), Maureen Ward, (for correcting this text and some worthful suggestion to improve the parameter lay-out), Thea Verkerk, Titia van Beugen, and 'FarDareisMai' (Jess). They all helped me in one or another way to work out the concept of Ducky and its derivative: Lucky. Bleiswijk, sept.3rd 2013 ============================================================================================================================================== Olapol mapping There's a new version of mapping 'Olapol' on the UF Formula Database (ea.uxf). When using old upr's, which made use of the original version 1.00, you'll don't have problems. These upr's will work automatically with this new version. In this version 1.01 there are 2 options: 1. Olapol, the same as the original version 1.00 2. Apollo modified, it's almost the same as IFS-Apollo in reb.ucl, only some parameters have been added, including a complex parameter 'center', which originally was a constant 0/0. The other added parameters, which are enabled in both options are: float parameters #1 and #2 and complex parameter #3. In the original IFS-Apolllo they are constants. The integer parameter '# pseudo-iterations' got its name because the loop section in 'Olapol' doesn't give real iterations. In the Olapol option the loops are addtions. When the indicated number of pseudo-iteration has been reached, it is divided by this number, so we get the arithmetic mean value. It will be clear that by increasing the number we come closer and closer to a fixed mean value. So lower values of additions are more interesting. With this option it is also possible to change the probability of the 3 formulas, by adjusting parameters threshold and ceiling. Default, the probabilty is 1/3 for each formula. In the Apollo option the number of pseudo-iterations are comparable with a fruit machine. A very simple one, with only 3 possibilities, corresponding with the 3 formulas in the loop. For instance, #1000 gives the same image as #4, In fact, with the given seed of 123456789, as we did here, the 3 different images are already reached after 5 pseudo-iterations, #1, 2 and 3 are identical, #4 and #5 provide the other two. The background of the Apollo system is unknown, but in the original script there are two remarkable constants: 0.5 and 0.5v3, the sides of a rectangular triangle with hypotenusa = 1 and angle 60º (1/3 rad.). When button 'geometric mode' is enabled this angle can be varied, while the hypotenusa of the virtual rectangular triangle remains 1. So both former constants are now automatically adjusted in a coupled way. This 'geometric mode' is a new feature in the new Olapol version. It works both for the Olapol and Apollo option. In a nutshell: First we see a question: "Addition or Single?". These options both use some basic mapping formulas. 'Addition' is the same as 'Olapol' vs.1.01. At every addition one of 3 available formulas is selected in a random manner. It makes little sense to increase the number (in "# of additions) to high values. Relatively low values already give interesting images. The randomness can be adjusted by changing the parameter 'seed'. (Default it is 123456789.) 'Threshold' and 'Ceiling' are default on 1/3 and 2/3. So the probability of the selection of a formula from the three available formulas for each subsequent addition = 1/3. By varying these parameters, you can change the probability distribution. 'Single' is the option for choosing only one formula. Here there are two possibilities: one way, the default setting, and "the other way". In the default setting we can select with parameter 'Key' from five available formulas. #0, #2 and #4 show distorted pictures as we already know from vs.1.00, and also from IFS Apollo (reb.uxl). #1 and #3 are new, they provide much stronger distorted images. 'The other way' gives two formulas: A and B. Both consist of two components, controlled by the complex parameter 'Balance'. In the second part, "Other parameters" are two possible paths: 'Geometric mode enabled or disabled'. Default this parameter is disabled. We then see two parameters, 1 and 2, affecting the shape of the image. If the 'Geometric' is enabled, we see only one parameter: 'angle'. It is a vertex of a fictitious right triangle. Also this angle has a large influence on the shape of the image. Finally we see a number of general complex parameters which also have influence on the image. They always work, regardless of the position of the modes adjusted: - Parameter #3 - Center (which is related to the origin) - Scale. This is not a scaling factor that acts as a 'zoom'. Even with this parameter 'scale' the image can be distorted. Notes. 1. The same kind of mapping can be found as 'Pallas' in ea.uxf, a further development of 'Olapol' with more direct control on all parameters, 2. Olapol and Pallas are especially useful for Ducky and related fractal formulas, With thanks to Ron Barnett who gave kind permission to modify his original Apollo mapping.