gaussian_blur

gaussian_blur gaussian blur3

Name: gaussian_blur
Type: 2D blur

Name: pre_blur
Type: 2D blur pre

Description

Carl Frederich Gauss was a preeminent early nineteenth century German mathematician and scientist. Among the many things named for him is the Gaussian distribution, also known as the normal distribution or the bell curve, which is very important in statistics. It also forms the basis of the gaussian_blur variation in JWildfire.

To understand how gaussian_blur works, let’s first consider the blur and circleblur variations. All three variations pick a random point inside a circle by choosing a random angle and a random distance from the center. They produce different results by using different methods of choosing the random distance, which can be analyzed using probability density functions.

The blur variation chooses a random number between 0 and 1 with all values equally likely; its probability density function is shown in the top left curve below. This is called a uniform distribution. The top right curve illustrates the density of the resulting disk based on the distance from its center. It has a higher density near the center than the edges because as the distance from the center decreases, the number of points gets smaller so any particular point is more likely to get chosen. In contrast, the circleblur variation uses a parabolic probability density function as shown in the middle left curve, resulting in a disk with even density across its radius.

The gaussian_blur chooses a random number between 0 and 2 using a Gaussian distribution as shown in the bottom left curve. The result doesn’t get cut off at 1 like with blur and circleblur, but continues outward getting less and less dense. This gives gaussian_blur a much softer edge than other blurs.

gaussian_blur blur comparison 300x211

Gaussian_blur is a blur variation, and can be used in the same way as other blur variations; see blur. It’s soft edges make it useful where the hard edges of other blur variations would be distracting. For example, these flames are a variant of the plastic style using blob instead of linear to produce jagged edges. The first one uses blur, and its hard edge is apparent and distracting. The second one uses gaussian_blur instead to avoid this problem; the difference is subtle, but it is a more pleasing flame.

gaussian_blur gaussian blur2 300x240

gaussian_blur gaussian blur3 300x240

Gaussian_blur is also useful for softening sharp edges by adding a small amount to a transform with other variations, and can even be used with other blur variations to soften their shapes.

The pre_blur variation also uses the Gaussian distribution. It differs from gaussian_blur in two important ways:

  • It does not ignore the input points like other blur variations. It chooses a random point like the others, but instead of replacing the input point, it adds the random point to the input point. If the amount is small, this provides a gentle blur to the input point. If the amount is large, it will overwhelm the input point.
  • The “pre_” means it is applied before normal variations, so they act on the blurred points instead of the original ones. It can’t be used by itself; a normal (not pre_ or post_) variation is required on all transforms.

To see some of the ways pre_blur can be used, consider this typical splits-elliptic flame, made with four transforms: the first two use elliptic and splits to form the main structure, and the last two use cylinder to outline the structure (a common use of cylinder).

gaussian_blur gaussian blur4 300x300

Notice how the outline from the cylinder variations has some artifacts. They are a bit distracting. We can use pre_blur to smooth them out. A small value (like 0.5) will let them show through a bit, which is sometimes desirable. But here we completely obliterate them by using a large value, specifically 10.

gaussian_blur gaussian blur5 300x300

Much nicer! Pre_blur can also be used to create special effects. Here we add a very tiny amount (0.0075) of pre_blur to the transform with splits. The blur adds up as the flame is iterated, making areas generated by multiple iterations more blurry than areas generated by fewer iterations. This helps give emphasis to the central structure of the flame. Whether the result is “better” than before is a matter of opinion (or maybe artistic intent), but this demonstrates how pre_blur can be used to control the composition of a flame.

gaussian_blur gaussian blur6 300x300

Parameters

variation amount The radius of the generated circle.

Resources

Blur at Fractal Formulas
Flame pack (flames used above)

blur

blur blur9

Name: blur
Type: 2D blur

Name: blur_circle
Type: 2D blur
Author: Joel and Michael Faber

Name: circleblur
Type: 2D blur
Author: Anton Liasotskiy (zy0rg)

Name: sineblur
Type: 2D blur
Author: Anton Liasotskiy (zy0rg)

Description

The blur variation generates a filled-in circle. Unlike most variations, which transform the plane by mapping input points to output points, blur completely ignores the input. The variations blur_circle, circleblur, and sineblur also generate filled-in circles. They differ in how the density is distributed across the disk. Blur has high density in the center, gradually decreasing towards the edge. Blur_circle and circleblur have even density across the disk; they use different math, but produce identical results. Sineblur has a moderately dense center that decreases in density toward the edge.

blur blursample 300x100

The blur variation lends its name to a whole class of variations that, like blur, ignore their input. Some of these have “blur” in their name, such as nBlur and radial_blur. But most do not; some popular ones are crackle, dc_perlin, and parplot2d_wf. Somewhat confusing, several variations that have “blur” in their name transform their input to make it blurry, so are not in the class of blur variations; examples are blur_linear and farblur.

Most blur variations have sharp edges and are not “blurry” by themselves. However they do add blur when added to a transform with normal variations. For example, the top image is a simple spherical gasket. In the bottom image, a tiny amount (0.001) of blur was added to one of the transforms. This technique is often used to soften sharp edges in fractal flames.

blur blurgasket 300x300

Blur variations are often used to fill in holes in a flame. For example, the gasket above has lots of circular holes that are just waiting to be filled. In this case, just one hole needs to be filled; the fractal structure will replicate the filling to all the other holes. Here we put a sineblur in the hole just to the left of the center.

blur blur6 300x150

When working with blurs it’s important to realize that since the input points are ignored, the pre-affine transform will have no effect. To move the blur, as we did the sineblur above, the post transform must be used.

Blur variations can also add design elements to a flame. Here, blur_circle creates circles that add interest. Other blurs create different shapes; for example, starblur creates stylized stars and radial_blur creates starbursts.

blur blur7 300x240

Blur variations are essential for many styles of flames. They provide a basic shape that is then repeated and distorted by other transforms. For example, the plastic style uses blur to create a circle on one transform, then spherical with just a touch of linear on another transform to form the plastic style. The bright spot from blur is typical of this style; replacing it with sineblur gives the plastic shapes a matte appearance. Using other blur variations gives different results (some pleasing, some not so much).

blur blur8 300x240

Another useful technique is to duplicate the blur and change the variation in the copy to a normal variation, preferably one with the same shape, such as bubble or eyefish for blur. This adds some texture taken from the rest of the flame to the circles. Adjust the pre-affine transforms, which work for non-blur variations. Here is what happens when the duplicate is replaced with hemisphere. Alternatively, the blur can be simply replaced with a normal variation; here, that would eliminate the bright spots at the centers of the circles, which add to this flame. But every flame is different; there are no hard rules. Experiment!

blur blur9 300x240

Parameters

variation amount The radius of the generated circle.
power For sineblur only, controls the density distribution across the circle.

Resources

Blur at Fractal Formulas
Flame pack (flames used above)

spherical

spherical spherical8

Name: spherical
Type: 2D

Description

The spherical variation reflects the plane across the unit circle (the circle with radius 1 centered at the origin). Mathematically, this is called “inversion in the unit circle”. This is illustrated with the following contrived example, which uses five transforms with svg_wf to create five purple creatures (the default svg_wf graphic) in various locations. The unit circle is shown in red. The green reflections are the images of the original creatures created by using spherical. The unit circle itself isn’t changed by spherical. If a creature had been placed at the center, it would have been mapped to the outer regions of the plane close to infinity, so not visible in the frame.

spherical spherical1 300x300

An important property of spherical is that it always maps circles to circles. But there is a special case. Look closely at the rightmost creature. Notice that its back is straight, but the image is curved. If we were to extend that line segment to be a complete line with both ends reaching to infinity, its image would be a circle. This is because a line is actually a special kind of circle, one with no curvature. It does seem a strange notion, but it is in fact mathematically sound. This special case only applies for circles that touch the origin, which spherical will map to lines. Conversely, spherical will map infinite lines to circles that touch the origin, and line segments to arcs of such circles.

What this means practically is that when using spherical you will tend to see a lot of circles. Since the blur variation produces a circle, let’s use it to see how iterating spherical works. This image was made using two transforms, one with blur, and one with spherical, with the spherical transform rotated and moved.

spherical spherical2

This figure illustrates a number of points:

  • Spherical preserves circles, but the center of a circle rarely maps to the center of the circle it maps to. The circle in the very center of this figure, with a bright spot in its center, is the original blur. The other circles are made by iterating spherical, and the mapped bright spots are not at their centers. So if a circle contains a pattern, spherical will distort that pattern even though it preserves the circle.
  • The arrangement of a circle and a line are seen frequently with spherical, though this one is specially contrived to make overlapping iterations coincide so only 22 separate disks are visible. In practice, the disks overlap each other, with often rather messy results.
  • Defining the inside and outside of a circle can be tricky mathematically, and spherical often seems to switch them. The colored area around the edge of this figure is in fact the inside of a circle; it extends to infinity in all directions. The outside of this circle is the white part containing the other circles that a normal person would call the inside. (Mathematicians are not normal people!)

Although not terribly interesting by itself, adding a very small amount of a contrasting variation to the transform with spherical can produce interesting styles. For example, adding a bit of linear produces the plastic style (the built-in script “Plastic” uses this technique).

spherical spherical3 300x300

Adding a bit of cross instead produces the oily style (the built-in script Oily_Rev3 uses this technique).

spherical spherical4 300x300

Not all variations work well, but that won’t stop us from trying! If one variation doesn’t work well, just try another. This one uses taurus.

spherical spherical5 300x300

Another common way to use spherical is to make a gasket. There are several ways to do this, but they involve two transforms with spherical at amount 1 and both rotated 90° (here we rotate them both clockwise). Then one of the variations is moved 1 unit in some direction, usually horizontal or vertical since that’s easiest, but just to be different we’ll move it diagonally here.

spherical spherical6 300x300

To make it more interesting, we fill the gasket by adding a third transform and moving the post transform up and left to center it in one of the large holes. Many variations can be used for this to produce different kinds of flames; this one uses hemisphere.

spherical spherical7 300x300

For something a bit different, this one uses cross.

spherical spherical8 300x300

Spherical is commonly used as a final variation. It moves points in the outer regions of the fractal to the center where they are visible. But it is only effective if there are lots of points in those outer regions. This will usually be the case when the flame uses variations like spherical and cross which throw points out there, and for infinite tilings. If there are no points in the outer regions, spherical will leave a hole in the center of the flame.

Parameters

variation amount Scale factor for the output.

Resources

The spherical variation is very useful, as attested to by the large number of fractal flame tutorials that feature it. They are mostly for Apophysis, but with a little experience they can be followed in JWildfire.

These tutorials use a transform with some kind of blur manipulated by a second transform with spherical and a second variation:

The blur can be replaced with a regular variation (usually a round one like bubble) to add more texture:

These tutorials are based on a spherical gasket:

There are, of course, other ways to use spherical to make flames:

Finally, you can start with one of the flames shown above by downloading the flame pack.

Blob

Blob blob5

Name: blob
Type: 2D

Description

The blob variation pushes and pulls the plane to make it look like a blob. Specifically, it takes a sine wave, wraps it into a circle, and uses that to distort the plane. The pictures below show respectively a sine wave, a radial sine wave (one wrapped into a circle), and a circular dc_perlin texture before and after applying blob.
Blob blobintro 300x300

Blob works as a final variation (as was done above), but is not used very often since most fractal artists don’t want their results to look like a blob. Used as a regular variation, blob can produce effects ranging from flower shapes to wavy distortion to unique gnarls.

This flame uses the technique for plastic and oily flames: a blur iterated with spherical with a tiny amount of a distorting variation (linear for plastic and cross for oily). Here, the distorting variation is blob.
Blob blob5 300x300

This flame uses dc_dmodulus to produce a unique tiled fractal. But that variation by itself produces straight, angular shapes. Here it is linked to blob to make the shapes more organic.
Blob blob6 300x300

This flame uses a technique similar to one commonly used with waves2 to make gnarls, but uses blob instead which results in a gnarl with a different character.
Blob blob7 300x300

Parameters

variation amount Scale factor for the output.
low Proportional height of the troughs of the waves. It is typically set less than 1, though this is not required.
high Proportional height of the crests of the waves. It is typically set a bit larger than 1, though this is not required.
waves Number of waves. Normally an integer; if not, one of the waves will be cut off.

When low and high are both set to 1, blob is the same as linear. A useful technique is to change the linear in an existing flame to blob and set low and high to 1, so the flame doesn’t change. Then gradually decrease low and increase high to introduce distortion.

Flame pack (flames used above)