JC Dabbler Help File

How The JC Dabbler works

In general, the JC Dabbler formula goes like this:

"z" is the main variable that is changed, iterated, and used by the formula to generate the image.

For every pixel value in the image (i.e. each iteration),

z is first set to the z initializer value set by the user in the "z initilization options".

If the parameter explorer has been turned ON (see parameter explorer below), the switch mode in the parameter explorer will be calculated and will replace the z initializer mode value, based on the switch mode selected.

If any tweaks are selected, they are now calculated here. If the "Tweak once or many" box is NOT selected, the tweaks will only be calculated and included into z once, at the initializing phase. Otherwise, if the "Tweak once or many" box IS selected, the tweaks are calculated and included in to z every time the formula "loops", or iterates (calculates the next pixel)

After the tweaks are calculated, the formula equation flavors are calculated, and integrated into z one at a time, starting with the main equation, and working from 1st equation flavor through to 10th equation flavor, integrated into z as the user has the set the operation for each equation flavor

From there, the formula tests for the bailout condition. The bailout is, basically, an expression; for example, "if z < #pixel, then stop iterating, and move on to the next pixel" (also called bailing-out, becuase you "bail out" of calculating z for the current pixel value, and move on to the next one). It can also be thought of as a question. Is z less than the pixel value? If that's true, then stop iterating, and move on to the next pixel. If it isn't true, then do the loop section again, and ask that question again after you go through in the loop section. In a bailout expression, there is a left side (z) and a right side (#pixel) to the bailout test expression, as well as an operator (<). The user can set exacting customized bailout conditions to suit their needs. If z, after all the calculations above, meets the bailout condition (in the above case, if z is less than the current pixel), the formula stops calculating the equation, changes the value of #pixel, and starts the entire formula again from the top. Otherwise, it will calculate the equation (and tweaks, if set to tweak every iteration) again until z reaches the bailout condition.

DETAILS OF EACH PARAMETER SET

Initializer Parameters:

Changes how Z is initialized at the beginning of each iteration, after the formula has bailed out from the last pixel value. The user selects a "Z initalizer", which will initilalize z to that particular equation. Underneath the z initializer, all parameters & functions RELEVANT to the particular z inilailizer equation appear, IF NEEDED (if they are not needed, they are hidden so as not to confuse the user)

The default is #pixel

Z Tweak Parameters:

The first checkbox is "Tweak once or every iteration?" By checking this box, you can have the tweaks be incorporated into z every time the formula re-calculates the equation prior to bailing out. If it is not checked, the tweaks will only be incorporated into z once, when the formula is being inialized, and will not be recalculated until the formula bails out of the current iteration

Each checkbox below that is a tweak that you can incorporate into z. When you check the box, all parameters & functions RELEVANT to the particular tweak show up underneath the box, IF NEEDED (if they are not needed, they are hidden so as not to confuse the user). Changing the values will change the tweak.

At the bottom of each tweak is the tweak modifier. This allows you to choose how this particular tweak is to be integrated into the formula (added, subtracted, multiplied, divided, etc.).

By default, no Z tweaks are selected.

Z Equation Parameters

This is the real "meat" of the formula. The main equation flavor (at top) is always calculated, no matter whether or not any other equation flavors are selected. If any other equation flavors are used, they are integrated one at a time (1st flavor, 2nd flavor, 3rd flavor, etc.)

For the Main Equation flavor (and any other equation flavor you check the box to use), the equation flavor selects the equation you wish to use as the flavor. Underneath the equation flavor, all parameters & functions RELEVANT to the particular equation flavor appear, IF NEEDED (if they are not needed, they are hidden so as not to confuse the user).

At the bottom of each equation flavor is the flavor operation. This allows you to choose how this particular equation flavor is to be integrated into the formula (added, subtracted, multiplied, divided, etc.).

If you were to go down the line and write each equation flavor and operation in a line, you'd come up with a single formula equation that changes the value of z

the default is set this way:

Main z Equation flavor: z

Main z Equation flavor operation: z = Equation

1st Equation flavor: z

1st Equation flavor operation: z * Equation

2nd Equation flavor: #pixel

2nd Equation flavor operation: z + Equation

writing these parameters in a line, you'd get the following:

z = z * z + #pixel

whaddya know? it's the mandelbrot set!

you can also achieve the same results by doing the following:

Change the 1st equation flavor from z to p1

**note that p1 will pop up underneath the 1st equation flavor, and above the 1st equation flavor

Change the 1st equation flavor operation from "z * Equation" to "z ^ equation"

Change the real value of p1 (the one that just popped up) from 0 to 2

now you should have this:

Main z Equation flavor: z

Main z Equation flavor operation: z = Equation

1st Equation flavor: p1

(1st equation) p1 (real): 2

(1st equation) p1 (imag): 0

1st Equation flavor operation: z * Equation

2nd Equation flavor: #pixel

2nd Equation flavor operation: z + Equation

writing these parameters in a line , you'd get the following:

z = z ^ p1 + #pixel

or (and substituting the numerical value of what you chose as p1):

z = z ^ 2 + #pixel

OMG! It's the mandelbrot set again!

Let's try something else. Let's add another equation flavor into the formula

click on the box "show 3rd equation?"

**a 3rd equation flavor and operator will pop up underneath the box

change the 3rd equation flavor to "fn1(z)"

**an fn1 parameter will pop up underneath the 3rd equation flavor and above the operator parameter

change the fn1 from sin() to sinh()

change the operator parameter from "unused" to "Equation / Z"

Your "mandelbrot" looks very different now!

Let's "dabble" some more. Lets change the main equation flavor to something else.

change the main equation flvor from "z" to "z*z+#pixel"

look at how your image has changed from your original mandelbrot image.

Zoom in if you'd like. Add a tweak to it. It's all about "dabbling"- changing things and watching how the image changes. If you want to start over, simply reset the parameters, and you will return to your basic mandelbrot set.

As a note, for all of you looking for a julia-

the formula equation for a basic julia is z = z * z + p1, where z is inialized to #pixel

from the default parameter values, it is very easy to make a julia. this is what you do:

change the 2nd equation flavor from "#pixel" to "p1"

set an appropriate value for p1 (from -1.5 to +1.5 for real and imag values of p1)

viola! You now have a julia! Have fun "dabbling" with it!

Bailout Parameters:

This is an advanced baiout system that lets you choose what is tested to see if the formula stops the iteration of the formula for the current pixel, and moves on to the next pixel value.

bailouts are designed as a single expression, like this:

z <= p1

or

fn1(z) + #pixel != p1 * (z ^ p2)

If the bailout condition succeeds (if z is, in fact, greater than p1, for the first example), the formula will stop calculating z for the current pixel, record z and how many times it looped to make the expression true, and move on to the next pixel value, resetting z and beginning with the initilization process over again. Otherwise, the formula will re-calculate the loop section again, using the current value of z as the initial value.

The bailout expression can also be thought of as a "question" of sorts.

z <= p1

could be thought of as

Is Z Less than or Equal to p1?

If this is true, then "bail-out" of the current pixel value, and move on to the next one. Otherwise, send z "through the ringer" back through the loop section for another "iteration".

there are three main parts of the bailout condition:

the left side

the right side

the operator

z <= p1

The left side and right side are simply equations based off z, much like the formula flavors above.

The operator is what tests the relationship between the left and right sides. If the test passes, the formula "bails out" of the equation being calculated for the current pixel, and moves on to the next one. If the test fails, z is sent back "through the ringer" and recalculated through the z tweaks (if they have been set to tweak z every iteration) and formula equation flavors, after which it will tested once again for bailout

The left and right side formula flavors are standard equations, much like those above in the formula flavors. Underneath each side's flavor, all parameters & functions RELEVANT to the particular bailout side's equation flavor appear, IF NEEDED (if they are not needed, they are hidden so as not to confuse the user).

For each side, there is also a Z bailout modifier. Becuase of the way the bailout expression is read, the values of the left and right side must be float values. Unfortunately, the left and right side flavors are each complex values (which is really just 2 float values- the real value and the imag value). The Z Bailout modifier mixes and matches the real and imag float values of each particular side to produce a single float value for the expression. There are two functions which, IF NEEDED, will pop up for the user to modify as necessary- internal and external. What's the difference? The interal function is applied to each float value (real and imag) BEFORE being calculated together (added, subtracted, multiplied, etc.). The external function is applied to the value AFTER the real and imag values have been calculated together.

Finally, we have the Bailout test operator. This value determines the relationship between the right and left sides that will be tested to see if the formula "bails out" of the calculation of the current pixel an moves on to the next one. The choices are as follows:

left == right (left side IS EQUAL TO right side)

left >= right (left side IS GREATER THAN OR EQUAL TO right side)

left <= right (left side IS LESS THAN OR EQUAL TO right side)

left > right (left side IS GREATER THAN right side)

left < right (left side IS LESS THAN right side)

left != right (left side IS NOT EQUAL TO right side)

The defaults are set as follows:

Left side: z

Left side bailout modifier: real + imag

Right Side: p1

(right side) p1 (real): 2

(right side) p1 (imag): 0

Right side bailout modifier: real + imag

Bailout Test Operation: left <= right

or,

z <= p1

Switch Options (The PARAMETER EXPLORER)

First of all this is NOT, repeat, NOT, the switch function you are used to. This switch function does NOT change from mandelbrot to julia, or from julia to mandelbrot, or from this formula to ANY other formula. There is NO Julia version of the JC Dabbler, and you CANNOT switch between julia and mandelbrot versions with the Parameter Explorer feature

NO

NO

NO

NO

NO

NO

Get that out of your head RIGHT NOW. If you really want a Julia fractal, you must "dial in" the julia forula specifically in the formula equation flavors, as described above.

Now let me tell you what the parameter explorer REALLY does. What it DOES do is that it allows the user to "explore" any of the complex variables in this formula, and to answer the question "what happens if p1 is set to this value?. Using the switch function of UF, the parameter explorer allows you to "see" what happens int he switch window if you change the value of one or more complex variables.

First of all, if you want to use the parameter explorer at all, you will want to check the box at the top, appropriately labeled "turn on parameter explorer". Checking this box "pops up" all of the parameter explorer options, which I will go into more detail below:

Switch mode options- When you use the switch function in UF, you can use one of these modes to change the value of z after you do the switch, as a "pre-modifier" to z before it is tweaked and calculated in the formula equations, but AFTER it has been initalized. The "Switch mode to" shows the mode you WILL switch to when you use the switch function. If you change this parameter, it WILL NOT SHOW until you actually perform the switch. it WILL, however, show up in the switch window as you are exploring parameters. The "currently in mode" shows the current switch mode you are in at the moment. If you change this parameter, it will have a dramatic effect on the formula. If any parameters or functions are NEEDED for either of the switch modes, they will pop up below these mode option parameters.

Variables to explore:

Each box here corresponds to a variable in the formula that the user can explore. The boxes will only show for those parameters that can be explored in thecurrent formula configuration. By checking on the boxes of your choice, the user can select which variable(s) they want to explore. Please note that when you check a box to explore, the image may suddenly change. This usually only occurs after you have switched once, and occurs becuase the value that was previously entered in the parameter above is being overridden with the value in a separate variable ("current pixel") that holds that value of the current pixel from the previous switch. If this value in the separate "current pixel" variable is not zero (0,0), then the value will automatically override the value contained in the actual parameter.

When the user starts the switch mode and checks one or more parameter explorer boxes and clicks on the switch button in the "fractal mode tab", the switch window will appear, and the user will be able to see what happens if the parameter you checked is changed as the user moves the mouse around. If they see something they like, and click to switch, the value in the parameter you chose to change will be overridden by the value in the pixel, which is held in a separate variable that I explain further below

The "Current Pixel"

As I mentioned above, the drawback to the parameter explorer is that it cannot directly change the value of the parameter the user is exploring, but can only overrides it. It overrides the value in the parameter with the value contained in this variable.

If the user wants to keep this value for the parameter they selected, they can simply copy and paste the value from this parameter to the parameter that they were exploring.

Having trouble seeing an image? Here's some tips that may help you find something when all you see is a blank screen:

1. Zoom out: One of the thing I find common is that the blank screen I am looking at is only a very small part of a larger image, and that the more "interesting" areas are somewhere else, outside of the area I am looking at. By zooming out of the image, you can see whether or not there is actually something there. Usually, if I go through about 4-5 full zoom outs (with the mouse, hold shift and drag the mouse down until the area that you were looking at becomes a tiny little speck), and look to see what happens. If it is, indeed, a blank fractal, you'll know by the 5th zoom out. Sometimes, even when there is something nice onscreen, you may want to zoom out to check out other areas that may be even more interesting than the one you see. Just remember to reset the location when you're done, if you don't like what you see.

2. Change the coloring formula: Sometimes the "basic" coloring formula doesn't work. sometimes another coloring formula may work. Sometimes, if the blank screen is black, then trying an inside coloring formula may do the trick for you You never know unless you try...

3. Change the coloring gradient: Sometimes, the differences in a fractal image are so slight that you may have trouble seeing them. by changing the color gradient, you can see if that's the case. Insert a color into the gradient, make it something outlandish that is different from the rest of the gradient colors (for instance, a nice flourescent green works well with the standard gradient), then moving it back and forth along the gradient to observe any changes.

4. Change the bailout method: Changing the bailout method (left < right, left != right, etc.) can have a big difference in a fractal image. try changing it and seeing if it helps

5. Is there a #pixel in there somewhere? There must be a #pixel SOMEWHERE in the formula or it most likely will not work (you'll get a blank blue screen of frustration).

The Transformation JC Dabbler Formula

A lot of what I said above for the fractal formula is the same with the transformation formula. The JC Dabbler Transformation formulae, in addition to the fractal formula, also has a Z initializer, Z Tweak, and Z Equation parameters. These function the exact same as the fractal formula.

The only difference is that the bailout option is replaced with "Finishing Parameters". You see, the goal of a transformation formula, for each pixel in the image, is to "transform" that value of the pixel to that of another one. It does this by having the expression

#pixel =

or, in other words,

"the Value of the current pixel is now the value of this pixel over there"

The value of #pixel is denoted by two numbers, an X (real) and a Y (imag) coordinate. The center of the screen (if you didn't change the location any), is (0,0)

The Finishing options in the JC Dabbler contains parameters, much like bailout section of the fractal formula. The only difference is that these parameters now change the X (real) or Y (imag) coordinate of the pixel, rather than telling the formula when to "bail-out"

COLORING OPTIONS The coloring formula is, again, very similar to the Fractal and Transformation formulae. It also has a Z initializer, Z Tweak, and Z Equation parameters. These function the exact same as the fractal formula. However, like the transformation formula, the bailout section is different.

In the coloring formula, the "Bailout" section becomes the "coloring section". In this coloring section are up to four main variables for determining color. Each main variable has other variables and functions as needed (and work almost exactly as the fractal formula). The main difference is the "Special coloring options", which contains 3 parameters, Coloring Mode Style, and "color by pixel" The coloring Mode allows you to choose one of 5 different coloring methods:

gradient- only uses color1

RGB and HSL- use color1, color2, and color3

RGBA & HSLA- use all 4 colors

All Unneccessary colors are HIDDEN

The style parameter helps when #numiter == 0, or you otherwise get either a strange "checkerboard" pattern, or nothing at all.

Original- The original mathod. sometimes Produces strange quirky patterns and stuff (or nothing at all).

Quirk = Solid- all areas where #numiter == 0 (the parts that usually don't work) are removed and colored with the #solid color

Pixel Blend: uses the original mode when #numiter != 0, and uses the pixel coloring method when numiter == 0

New Style: A new coloiring style method

New Style Blend 1: uses the original mode when #numiter != 0, and uses the new style pixel coloring method when numiter == 0

New Style Blend 2: uses the new style when #numiter != 0, and uses the original pixel coloring method when numiter == 0

#z: when numiter ==0 , the pixel it is colored according to #z

#pixel: when numiter == 0 , the pixel it is colored according to #pixel

The "Color by Pixel" checkbox chenges the coloring formula to where, instead of coloring by the iteration, it colors by the actual pixel value. It's very useful when the normal colorings don't seem to work, as the pixel coloring method will *always* work 1