v.
1.3 Jun 2013

Modern
video feedback art
Algorithmic
Recursive Geometry - Evolving Fractals and Chaos – Image Morphing
Contents
Inserting the images into the flow
Perceptron is a video feedback engine with a variety of extraordinary
graphical effects. It evolves colored geometric patterns and visual images into
the realm of infinite details and deepens the thought.
Home page .................... http://perceptron.sourceforge.net
Download ...................... http://sourceforge.net/projects/perceptron
Gallery ........................... http://perceptron.sourceforge.net/gallery/index.html
Forum ............................ http://sourceforge.net/projects/perceptron/forums/forum/1256631
The classical video feedback is an artistic technique
that uses a video camera and a TV set. The camera and the TV set are connected
by cable so that the TV set can display live images coming from the camera. The
camera is directed at the TV screen – it is shooting the video of TV set
together with the live images from its screen. With a slight delay, the TV set
is broadcasting the video output from the camera. The TV screen develops a
recognizable pattern, live image of screens within screens shrinking towards a
bright point in the middle of the screen. By using a camera and a TV set only,
we can see a variety of fractal spirals and specifically, saturation-related or
pixel-related effects that stem from the electronic components. They are
obtainable by rotating the camera around its axis slightly and zooming in. With
a single mirror located next to the TV screen, we can additionally create
fractal trees, and by adding even more mirrors, we can create complex IFS
fractals. The effect of mirrors is equivalent to linear geometric transformations
applied to the screen contents. Every geometric transformation in the video
feedback cycle of visual data is applied repeatedly (recursively) to the screen
contents. [1]
To the left (below), we can see my Web Camera pointing at the computer
screen that is simultaneously displaying what the camera sees. To the right, I
placed my finger in front of the camera and it was multiplied. Once you insert
an object in front of the camera, the image is formed slowly and inwardly. The
relationship between the size and position of my finger and the size and
position of its first consecutive copy (slightly smaller one to the left) gives
us the geometric transformation that is applied recursively to the screen
contents in the video feedback cycle. The insertion of objects before the
camera is also known as the “insertion of image into the video feedback flow”
or as the “staining, tainting of flow” when a simple color is added to the flow
and it colors the screen.


The display is constantly fluctuating because the camera is
readjusting its sensitivity depending from the level of light in its view. When
the fluctuations on the screen begin to increase, the camera also begins to
readjust its sensitivity more wildly. Such behavior leads to possible chaos.
The camera and the screen represent a dynamical feedback system. To see
examples from other artists, see here and here.
Perceptron simulates the essence of classical video
feedback setup, although it does not attempt to match its output exactly. For
example, it does not simulate the relationship between the TV set, the camera
and the mirrors in space, or the effects due to electronic components. Instead,
it uses a two-dimensional computer screen only in order to transform (morph)
geometrically its contents. It applies any given complex function f(z, c) that
maps each point of the screen to a new location. When repeated, the
transformation produces a Julia fractal. This is unique to Perceptron. The
selected (or typed in) function is coupled with the pullback effect (with
rotation) that zooms in and out. See [2] for
examples. This is intuitively similar to the camera zooming into the screen.
I morphed the beautiful girl photo recursively by applying f = z2
- 0.66406214 - 0.24218677i and the pullback effect.

A set of coloring techniques produces Julia fractal contours
(concentric quasi self-similar ovals), gradient shape visible as the shade on
contours, and color saturation effects. The coloring techniques stem from the
boundary condition check performed on the point z’ = f(z, c). The default type
of check answers whether the point z’ is inside or outside the invisible limit
circle with radius 1. In all, the coloring techniques are the outside coloring
methods, the color gradients, the fade-to color modes, and the color filters.
With different coloring techniques, known Julia fractal begins to
emerge.


The “reflection transform” multiplies the resulting Julia fractal. It
returns the points mapped outside of the screen dimensions back within the
screen. This yields complex IFS fractals comprised of Julia fractal fragments
(multiple exactly self-similar fragments). This is intuitively similar to the
effect of mirrors, or linear geometric transformations, but can be more
complex.

Video feedback fractals represent unique and remarkable class of
fractals, a combined Julia and IFS kind of fractals. Some patterns such as
those within the flickering Julia lake are chaotic. They can be static,
alternating, or endlessly evolving in novel ways, which we call the “critical
state”. Perceptron is both an artistic and a scientific visualization tool for
these fractals. Here are some of the Perceptron’s animations… 1, 2, 3, 4, 5, 6. (The videos are extremely compressed to
reduce size.)
References:
[1] http://classes.yale.edu/fractals/Labs/VideofeedbackLab/VideofeedbackLab.html
[2] http://en.wikipedia.org/wiki/Conformal_pictures
Find
out more online…
http://en.wikipedia.org/wiki/Video_feedback
http://en.wikipedia.org/wiki/Fractal
Perceptron is a free, open source program written in Java (www.java.com) and licensed under the GNU Public License
GPL version 3.
Primary author: Michael Everett Rule (mrule7404@gmail.com).
Documentation and further development: Predrag L. Bokšić (junkerade@gmail.com)
Perceptron
runs on any operating system that
has Java environment installed. Install Java version 7 or newer from www.java.com first. This will give you the 32-bit
version of Java Runtime Environment (JRE),
which is conventionally used with internet browsers for running other Java
applications. If you have a 64-bit operating system, you should also install the
64-bit Java from
Oracle or install only this version if you don’t
use any Java 32-bit applications such as those in an internet browser.
If you
are using Windows operating system, download and
run the Windows installer version of Perceptron. By default, it will install
Perceptron into your My Documents folder. I recommend that particular location,
because you possess all the permissions to write to that folder. Access is
required in order to save the artwork and to edit the settings file.
The Windows installer will put shortcuts to the Perceptron executable file and to the Perceptron Settings. By double-clicking Perceptron shortcut, the appropriate 32/64-bit version of Java should start automatically. The shortcut Perceptron Settings is used to edit the Settings.txt file in a text editor (if necessary).
The
shortcuts to the helper applications Perceptron.exe
and Perceptron 64.exe are installed in
the Start Menu folder Perceptron.
They are used to execute the Perceptron application itself – Perceptron.jar – by using the
appropriate 32/64-bit Java version. The appropriate version for your system provides
a considerable boost in performance.
The
helper applications sometimes cannot start due to Java environment errors. See
the following web site for the
instructions how to set Java path and if you are a programmer, other
Java-related environment variables (classpath and java_home). Add the folder
name where you stored the 64-bit version of Java Runtime Environment to the
beginning of your path variable. Visit the Java settings in Control Panel, go
to tab Java, and press the button View. There you can press the button Find to
scan for all Java environments on your computer. The first listed version will
be used; usually, it is the latest 64-bit version. Be free to reinstall the 64-bit
version of Java if you have any further doubts.
If
necessary, you can try to execute the old-fashioned perceptron32.bat or perceptron64.bat
in the Perceptron folder, depending from the 32/64-bit type of system that you
have. This will leave a console window open, where you can read the messages
from Perceptron at your desktop. Use Alt + Tab to switch to desktop and to
switch between all running programs.
In the
past, users encountered the problem, because the 32-bit Java for Windows updates
itself automatically via internet and the 64-bit version does not. Over time,
the 32-bit version would install itself as the primary version, so a direct
shortcut to Perceptron.jar program
would execute as a 32-bit program at a slow speed. If you manually set the Java
environment variables, the problem will be solved and the helper applications
will work (Perceptron 64.exe, perceptron64.bat).
If you
are using Linux, use the Linux
installer, or install
manually. Perceptron uses any Java such as 64-bit OpenJRE version of Java, which is available from
your distribution’s publisher.
For the manual installation, use the following
procedure.
There
are two versions of Perceptron available for download, two ZIP archives, with the source code
included and without the source code included (executable only). Most users
should select the executable only version. Unpack it to any folder where you
have access, such as My Documents, or D:\ on Windows systems, or Home folder on
Linux, etc. That will create a folder named Perceptron.
If you
are using Windows, enter the
unpacked folder Perceptron, right-click and drag the appropriate file Perceptron.exe
or Perceptron 64.exe to your Desktop in order to create a desktop shortcut. The
folder Perceptron contains the icon file icon.ico
that you can assign to the shortcut by right clicking the shortcut and
editing its properties, if necessary.
If you
are using Linux, enter the unpacked
folder Perceptron. Edit the
properties/permissions of perceptron32.sh
or perceptron64.sh and make the file
executable. Right-click and drag the appropriate file to your desktop. Linux
will offer a menu to create a shortcut to the file. The folder Perceptron
contains the icon file icon.ico that
you can assign to the shortcut by right clicking the shortcut and editing its
properties. (Notice that the latest Linux systems such as Open Suse may possess capability to execute Java
programs directly regardless of Java environment.)
In you
want to run the program manually, go
to the console and execute java –d32
–jar Perceptron.jar or java –d64
–jar Perceptron.jar on a 32 or 64-bit operating system. In Linux, these
commands are usually formatted as java
–d32 –jar ./Perceptron.jar and java
–d64 –jar ./Perceptron.jar. In Windows, it is possible to double-click the
file Perceptron.jar directly and run it, but the success of this operation
depends from the primary version or the last installed version of Java.
In the case
of any unforeseen problems, you can try to reserve the additional memory space
by executing the following command, java
–d32 –Xms512m –Xmx1024m –jar Perceptron.jar or java –d64 –Xms512m –Xmx1024m –jar Perceptron.jar. (Do not
artificially limit the available memory to a very small value, because the
program will run into error.)
If you
wish to see the source code, participate in the development and compile the project, then download and unpack the ZIP archive with the
source code included. Furthermore, install NetBeans
environment and the Java Development Kit (JDK) version 7 or newer from here. The
development is possible on any operating system. In NetBeans, open the project
(Perceptron folder) from the File menu, and press play (run). I also use IntelliJ
IDEA programming
environment. (The execution of Perceptron within both of these programming
environments is fast.)
After startup, it takes a
few seconds for the first fractal image to appear in Perceptron. Fractals in
Perceptron are evolving forever. They are never final. However, depending from
the equation (complex function f(z, c)) and the selected reflection transform,
some are changing a lot, while others are mostly static.
Perceptron is controlled by keyboard and mouse. Almost all keys on the
keyboard are in use – they are associated with the program options. Read the on-screen help by pressing the key / (slash). Here is the look of the help
screen.

The mouse controls any one of the four basic cursors. At startup (as
well as upon loading a preset), neither cursor is selected. Click left or right
mouse button to select a cursor.
Red
cursor: sets the
parameter c of the complex function (e.g. f(z) = z2 + c), (mimics
the camera position).
Blue
cursor: controls the
pullback, (mimics the camera distance and rotation).
Yellow
cursor: sets the color
gradient parameters, offset and slope.
Dragonfly (black cursor): controls the amount and
type of color filtering (contrast) in combination with the X switch.
The red cursor controls the parameter
c with its position, c = (x, y). The center of screen represents the
coordinate zero (0, 0), while the edges of a typical square screen are at about
1.1 units away.
The blue cursor controls the rotation and the pullback. If you rotate it around the coordinate zero, the whole
fractal rotates, but at the same time, the parameter c rotates as well. If you
move the blue cursor closer to the coordinate zero, you mimic the situation in
which you move the camera away from the screen. This is analogous to the image
of screens within screens diminishing in size and contracting towards the TV
screen’s middle. If you move the blue cursor away from the coordinate zero, you
zoom in, i.e. you simulate the camera approaching the screen. Press End to
disable or enable the pullback.
It is best to see how the yellow cursor and the dragonfly cursor
behave in practice. They control the application of the radial gradient, a
matrix of shadow intensities that is used for the basic, gray-scale coloring of fractals. For example, if
you move the yellow cursor to the lower left corner, you will see the classical
Julia fractal in clear black and white. Other positions on the screen will
reveal the effects of other coloring techniques, reflections, and even saturate
the fractal with details. In combination with the X switch, the black cursor
controls the shading of gray-scale Julia contours and if the fractal is full of
lively colors, it has a large influence over the evolution of chaotic colored
patterns.
Cursors are typically decorated with small circles (dots) that follow their motion. The cursor motion is slowed, because it
smoothens the morphing of Julia fractal. It appears as though the cursor is
dragging a weight on an elastic rope. Both features are optional and are adjustable
by pressing =, - and ], [.
The activation of the rotating
three-dimensional fractal Tree will bring up the additional, temporary set
of 4 cursors that control the tree (its position and design). You can select
any cursor by clicking left or right mouse button. The Tree is an artificially
inserted IFS fractal for artistic purposes, which you can bring about when you
press T. When you deactivate it, the tree-related cursors disappear.
The visibility of all active
cursors can be switched off and on by pressing C.
The initial fractal is
defined in the default preset file Perceptron\resource\presets\a.state.
The default preset file is loaded automatically as the first preset file in
folder Perceptron\resource\presets according to its name. In order for the
Perceptron to function properly, there must be at least one, initial preset in
the presets folder. The image file denoted in the preset must be present on
your computer. If it is not found, the program will exit. If the image file is
found, but other images denoted in other presets are not found, Perceptron will
use the image denoted in the initial preset in combination with other presets whose
respective image files were not found.
The screen resolution is
given in the settings file, Perceptron\resource\Settings.txt.
If you installed Windows installer version of Perceptron, the shortcut to the
Settings.txt file is on your desktop. Otherwise, open the folder Perceptron\resource,
hold the file Settings.txt with the right mouse button, drag it and drop it to
your desktop. Double click the shortcut to edit the file manually. Current
default resolution is 640 × 640 pixels. This allows my computer (featuring the
Intel E5200 processor and the ATI Radeon 2600 HD graphics card) to achieve 20
frames per second when displaying the default preset. If you achieve the frame
rates far beyond the abilities of your monitor, you may wish to choose a higher
resolution or slow the program down by pressing U. (Pressing U cycles through 4
degrees of speed moderation.)
Do not change the contents of the resource folder unless you know what
you are doing. You need the settings file, at least one preset, the image file
denoted in the default preset, CrashLog.txt, cursors folder with the cursor
images (icons), and possibly other files, especially if you are working with an
experimental version.
The settings file contains expert parameters such as the presets folder and the image folder, which denote the
locations from which Perceptron preloads all presets and all images at startup.
The order of file loading is according to the names of files. The preloaded presets are accessible by
pressing S or A. The image denoted
in a preset is loaded when a particular preset is loaded and is used in the image modes (L = 1 or 2) and in the fractal mode (L = 0) combined with
certain outside coloring methods (such as E = 3 or 4). The preloaded images are not necessarily denoted in any preset file.
They can be selected by pressing M or N. When used, the selected image morphs
on the screen (together with the mouse cursors) according to the selected
program options, namely the complex function (also known as the “fractal map”
or simply “equation”) and the “reflection transform”. You can load a single preset from any folder later
during operation by pressing `. Also, you can load a single image from any folder later during operation by
pressing \. All presets and images loaded in the course of operation are held
in program memory. They are added to the preloaded presets and images, and are
available by pressing S, A or M, N respectively.
The initial complex function
(equation) used for drawing the fractal and morphing the image is denoted in
the initial preset. If the equation is missing, then the default one will be
used, z*z. Similarly, other parameters that are deleted from a preset acquire
default values, if possible.
You can add your own complex
functions (equations) to the long list of “maps” in the settings file.
These equations are preloaded at startup and are available by pressing W or Q.
You can type an equation in during
runtime by pressing CTRL once, typing the equation and then pressing Enter.
Press CTRL again to stop editing the equation. This way you will exit the equation editing mode, deactivate the
text cursor and return the controls to the keyboard (return the default key
assignments.) Hint: you can play with the colorful letters by typing text
anywhere on the screen without pressing Enter (as to avoid entering a new
equation made of silly text). The colorful letters represent the Salvia mode (press ; to disable or
enable, and D to change the letter color scheme). The successfully typed-in and
executed equations are added to the equations in memory (all of which become available
by pressing W or Q), but are not saved to the hard disk otherwise, except for
the current equation that will be saved if and when you save a preset.
The equation denoted in a preset and loaded together with a preset is
active until you change it. Otherwise, it is not stored in memory and is not
available by pressing W or Q. Some equations are tied with the keyboard keys –
numbers (1, 2…) and function keys (F1, F2…). When you activate any of these,
the given equation is added to the equations loaded in memory.
The equations in the settings file, those that you type in, as well as
the ones stored in presets are in the form of f(z). For example, z*z gives the
default Julia fractal. You can also write that particular equation as z^2, or
zz. This is a well-known short form of znew = zold2
+ c.
The loaded equations, presets and images as well as other program
parameters that can be switched with a single press of a button, are stored in
lists that are repeating in circles. For example, the preset 0 is the first,
initial preset. The image 0 is the first loaded image, the one denoted in the
initial preset. The equation 0 is the first equation loaded into memory – the
first “map” followed by equation in the settings file. When you type in and
execute successfully any new equation, it is added to the end of the list in
memory. By pressing W, you move forward and by pressing Q you move backward in
the list of equations. Similarly, you can find presets and images in their
respective lists.
The transitional image morphing
occurs after you change certain parameters. It serves the esthetic purpose. The
most precise way to operate Perceptron is to do things slowly and wait for the
program to respond, for example, when you load or switch presets and images or
type in equations. You cannot change the key parameters during the brief
transitional period when the current image is morphing into the next one. The
image switching works somewhat faster.
The save option appears when you press Space. It will
save the state (preset file with .state extension) and the screenshots (two
consecutive frames with extensions .in.png and .out.png) in the My Documents
folder (or anywhere else as you select). Sometimes it is knowledgeable to study
the evolution of the complex fractal displays by comparing the difference
between the two consecutive frames. In some situations, the difference is not
visible to the naked eye. The only noticeable difference may be the slight
image softening (“convolution + Gaussian blur”) that the final image acquires.
This image is named name.out.png. I recommend Picasa viewer for all your
images, http://picasa.google.com.
If your artwork uses/displays an external image file that you loaded
from your hard disk, the image file name will be saved (denoted) in the preset
file. When you load the saved preset, Perceptron will look for that image file
on your hard disk. However, if you plan to share your preset with other people,
you must include the image file that you used. The only way to accomplish
interoperability between different computers is to select an image file in
advance and copy it anywhere within the Perceptron folder. Ideally, you should
create a new subfolder to store the additional images. Later, you will run
Perceptron, use the desired image file that is now located in the folder that
you created within the Perceptron folder, and save the preset anywhere you
like. When you give the preset to someone, include the subfolder with your
image(s) and tell your audience to put the folder inside their Perceptron
folder. This way, the path to the image together with the image file itself
will be universally accessible on all computers.
The CapsLock is temporarily assigned as the save button during the equation editing mode (if for some
reason, you wish to save a preset at that exact moment). Note that if you load
a preset with the equation-editing mode enabled, the default key assignments
will be temporarily unavailable until you press CTRL and exit the edit mode.
The saved presets are available by pressing ` (BackQuote),
which calls the Open File menu, or by placing the saved presets in the Perceptron\resource\presets
folder before the program starts. The name of the image file that was used at
the time of operation is written in each preset. Make sure that the specified
image file exists on your hard disk at the time of opening of preset.
(Alternatively, a preloaded image from the Perceptron\resource\images folder that
happens to be selected at that time will be used.)
The animation
mode starts when you press Home. Firstly, a menu will appear that requires
you to select a folder. After that, Perceptron will begin saving the finalized
consecutive frames named frame0.tga, frame1.tga, frame2.tga… It will erase any
files with the same names in that folder without asking. I suggest that you create
a new, empty folder. The animation mode will stop when you press Home again.
The animation mode is slightly slower than the normal mode of operation.
Remember to perform your planned actions slowly.
Warning: The animation
recording creates potentially extremely large number of TGA (Targa) image
files that you need to bind together into a motion picture. To bind the frames
into a movie, use the FFmpeg drive.
It is based on the world’s leading free video tool called FFMpeg. The 32-bit version of ffmpeg.exe for Windows has been
included in the Perceptron folder.
To check the latest version, download the static build from http://ffmpeg.zeranoe.com/builds. It comes in the form of 7Zip archive
that can be unpacked with the free tool http://www.7-zip.org.
Enter the unpacked FFMpeg folder, enter the bin folder, and copy the file ffmpeg.exe to the Perceptron folder
for convenience of access. Linux users should download from their software
package provider.
FFmpeg command can be used, if neccesary as follows. In Windows console, enter the Perceptron folder and execute the
following command: ffmpeg –r 16 –f image2
-i D:\Perceptron\animations\frame%d.tga D:\Perceptron\movies\movie.mkv.
This example is based on the locations where I recorded the frames and where I
want to generate the movie (animation). For some reason, I had to specify the
whole, exact path to the location where I stored the frames. The command –r 16 means that I want 16 frames per
second in the final movie. Set this number to the speed at which Perceptron operated
during the animation mode. You can find out what that speed is if you press z
in Perceptron. The frame rate will be displayed in the upper left corner. The .mkv extension means that you want the
movie to be in Matroska format, which provides rather high quality with solid
compression. Other movie formats can be quickly set by choosing some other output
file extension (avi, mpg…). Later, you can remove the TGA images, because they
occupy a lot of hard disk space.
If required, for the video conversion you can use Freemake
Video Converter, StaxRip, or ffmpeg with one of its many frontends, such as Avanti. Alternatively, try to execute a command
such as ffmpeg –i .\movies\my_large_movie.avi
.\movies\my_compressed_movie.mkv. The ffmpeg documentation is at the ffmpeg
project homepage. See more examples.
Underlying multimedia support for Windows can be obtained here, here, or here. I
recommend Daum PotPlayer
to see the movie, if you don’t have any player already. VideoLAN and Mulder’s SMplayer are also great players. Underlying
multimedia support for OpenSuse Linux is here.
Perceptron upholds the infinite, circular
flow of pixels (their colors), or in other words, visual images. The visual
images evolve quickly, slowly or endlessly depending from the geometric
transformations that are occurring between the two stages along the flow, the
screen and the buffer memory.
Perceptron uses 4 matrices of equivalent
format: screen, buffer (temporary screen contents holder), lookup table, and gradient
matrix. All 4 matrices are used in coordination, that is, we focus on a single
element from each of the 4 matrices at a given time in order to update a single
pixel of the buffer. For speed purposes, all matrices are stored in the form of
one-dimensional arrays.
The flow of visual images starts with the
screen matrix and follows to the buffer matrix. The screen represents the
portion of the complex plane around the coordinate zero, no bigger than the
circle of radius r = 3. The first or initial visual image (frame 0) needs to be
copied (“mapped”) from the screen to the buffer. The buffer will fill its
element (pixel) at the position z = (x, y) by reading the position z’ = f(z) at
the screen. The complex number z’ is precalculated and stored in the lookup
table at the position z.
Next, we test to see whether the point z’
is inside the limit circle of radius r = 1 or outside (depending from the
boundary condition). If it is within the circle, the color read at the screen
position z’ is color inverted and copied to the buffer at position z. If the
point z’ is outside the limit circle, some color is added to the existing pixel
color found at the screen location z’, after which it is color inverted, and
written to the buffer at position z. The added color depends from various
coloring functions. Primarily, it is a color value (“shadow intensity”) taken
from the gradient matrix at the position z. The gradient matrix is
precalculated and filled with a shape such as the radial (round) shadow, black
in the middle and gradually whiter towards the edge. When all pixels of the
buffer are filled, the buffer is copied to the screen directly. Over several
cycles, this creates a gray-scale Julia fractal with black and white contours.
The mentioned color inversion affects
pixels read at the screen position z’ both when z’ is inside the limit circle
and when z’ is outside the limit circle (that is, regardless of the boundary
condition check). We call it the total color inversion that affects the entire
flow of visual images (all screen contents). You can find the option to disable
the total inversion in the help menu. The partial color inversion refers to the
situation when the total color inversion is enabled, but you want to color
invert the fractal that you have in front of you on the screen. The total color
inversion is responsible for the concentric, interchanging Julia contours (e.g.
black and white) and for the flicker of the Julia lake. The partial color
inversion is a switch that replaces the black contours with white and white
with black.
Let us step back to the situation right
after the boundary condition check. If the point z’ is beyond the screen matrix
size, the “reflection transform” moves it inside (contracts it) by the
application of somewhat nonsensical linear functions. The color is obtained
from the screen after all, color inverted, and passed on to the buffer. This
creates multiple “reflections”, simple copies of Julia fractal portions
(fragments) that form IFS fractals. The linear functions are equivalent to the
affine transformations used to create IFS fractals in the ordinary fractal
generators.
A single cycle is complete when the buffer
sends (copies) its contents to the screen as they are. This initiates a new
cycle of geometric transformations from the screen to the buffer. Over the
course of many cycles, the exquisite combination of Julia and IFS fractals
emerges. The age of a video feedback fractal is expressed by the number of
cycles performed, which is also known as the number of iterations. The age
determines the recursive depth (e.g. number of concentric Julia contours added
inwardly).
The combined Julia and IFS fractals
sometimes occur as the effect of branch cuts of certain complex functions when
they are used in the conventional fractal generators (such as Fractint and UltraFractal). See for example, http://ultraiterator.blogspot.com.
Boundary Condition (R) – the boundary condition for points
z’.
0
Rectangular
Window (as the “limit circle”)
1
Limit
Circle (for classical Julia sets)
2
Elastic
Limit Circle (the limit circle size is tied with the blue cursor)
3
Horizontal
Window
4
Vertical
Window
5
Inverse
Oval Window (the inverse check on oval window)
6
No
Window (move on to outside coloring)
7
Framed
Window (with a colored frame)
8
Convergent
bailout condition (for Newton fractals)
Outside Coloring Method (E) – what to do with the points z’ that
are “beyond” according to the boundary condition check.
0
Fill
With Fade-to Color
1
Edge
Extend (pass on the color for points within a large screen)
2
Just
Pass on the Color
3
Paint
With Image (loaded image appears on fractal contours)
4
Paint
With Image II (image with soft edges)
5
Fuzzy
(a type of color average around the location z’)
Reflection Transform (I) – the contraction of points z’ back
within the screen limits.
Let z’ = (x, y),
while Width and Height denote the screen dimensions (W, H). The point z’ can
reach the positions between 0 and W – 1,
and 0 and H – 1. Make x and y positive.
0
Shrink
z’ to x = W – 1 – x modulo W, and y = H – 1 – y modulo H.
Perform the pixel interpolation (rounding
of pixels and enhancement of image quality).
1
If x
/ W is even, x = x modulo W, otherwise x = W – 1 – x modulo W.
If y / H is even, y = y modulo H,
otherwise x = W – 1 – x modulo W. Without the interpolation, but in use by the convolution procedure
that adds a layer over images (for softening).
2
Same
as 1, but with pixel interpolation.
3
x = x
modulo W / 2, y = y modulo H / 2. With interpolation.
4
If x
> W – 1, x = x modulo W, otherwise x = W – 1 – x modulo W.
If y > H – 1, y = y modulo H, otherwise
y = H – 1 – y modulo H. With interpolation.
5
If x
< W, x = x modulo W / 2, otherwise x = W – 1 – x modulo W.
If y < H, y = y modulo H / 2, otherwise
y = H – 1 – y modulo H. With interpolation.
6
If x
/ W is even, x = x modulo W / 2, otherwise x = W – 1 – x modulo W / 2.
If y / H is even, y = y modulo H / 2,
otherwise x = W – 1 – x modulo W / 2. Performs the additional operation of
making x, y positive, because they could become so large
(>2147483647) that they wrap around and come up as negative numbers. With
interpolation.
7
If x
/ W is even, x = x modulo W / 2, otherwise x = (W – 1) / 2 – x modulo W / 2.
If y / H is even, y = y modulo H / 2,
otherwise x = (W – 1) / 2 – x modulo W / 2. Performs the additional operation
of making x, y positive, because they could become so large (>2147483647)
that they wrap around and come up as negative numbers. With interpolation.
Color Gradient (G) – the color added to the points z’
that are “beyond” according to the boundary condition check.
0
No
Gradient (do nothing)
1
Simple
Gradient (gradient affects the color)
2
Accented
Gradient (accent color plays an additional role)
Gradient Shape (‘) – the shape of the two-dimensional
shadow used for basic gray-scale coloring.
The gradient shape can be visible on the
contours of a typical Julia fractal, which in turn can be uniformly colored
(without any indication of the gradient shape), or varied (which shows the
gradient shape). Each of 10 gradients was made by the calculation of various
functions of two variables. The default gradient (0) is the radial shadow,
black in the center and gradually whiter towards the perimeter.
Suppose that the Julia set is a circle.
When you change the proportions of screen (by adjusting the screen resolution),
the Julia fractal becomes an ellipse. The radial shadow also becomes elliptic.
This behavior is considered more natural for a video feedback system, because
its displays depend from the shape of the screen. The contours of the Julia
fractal behave similarly to the images of screens within screens in the
classical video feedback setup.
Gradient Direction (K) – whether the gradient shade is going
from black to white or from white to
black.
Fade Color Mode (F) – the fade-to color mixed with the
existing color of the point z’ outside the limit circle.
0
Black
1
White
2
Mid-Screen
Pixel Hue (select the color from the middle of the screen)
3
Not
Mid-Screen Pixel Hue (select the negated color value of the mid-screen pixel)
4
Mid-Screen
Pixel Hue Rotate (rotate the hue through HSV color spectrum and combine it with
the mid-screen pixel color)
5
Hue
Rotate (rotate the hue through HSV color spectrum)
Dampen Fade-to Color (V) – a small dampening of fade-to color.
Color Accent (H) – choose the accent color.
Color Filters (X) – the contrast enhancements.
0
None
(do nothing)
1
RGB (various
filters and color functions play a role)
2
Mush
(various filters and color functions play a role)
Partial Inversion (Insert) – partial inversion of colors
affects the fractal contours; black can become
white and white black.
Thanks to the total color inversion that
affects the entire visual image in each cycle, we have the interchanging Julia
contours, but consequentially the Julia lake flickers. The partial inversion
does not affect the flicker. It acts as the conventional color inversion of the
current screen contents.
Total Inversion (J) – disables the fundamental color
inversion.
The flickering of the Julia lake stops,
but the contours disappear as well. The visibility of fractals depends from the
fractal map (since some Julia fractals do not possess any lakes), and the
presence of other images on the screen (notably the screen cursors).
Initial set (B) – enable or disable the treatment of
cursors and text as the persistent initial set.
The mouse cursors, the letters, as well as
the text cursor in the equation editing mode are present on the screen on top
of the fractal. They are “persistent”/unchangeable, but the video feedback inputs
them and morphs them together with all other contents of the screen equally. As
such, they are useful for color seeding and demonstrating the nature of video
feedback flow.
Convolution (Y) – adds a layer that softens and blurs
the image.
Even though it is technically a blur, this
improves the quality of image greatly. It is combined with the selected
reflection transform. When I disable the convolution, I achieve a speed
increase from 16 to 20 frames per second with default settings.
Autorotation, Autopilot and
Wanderer (, . p Delete) – continuous random change of
different parameters.
Fun () – for speed purposes, we do not time
your usage of Perceptron.
Inserting
the images into the flow
One of the fascinating research options is to insert different images, live feed from a web camera, or geometric patterns produced in various processes into the video feedback flow. The rotating three-dimensional fractal Tree is one such insertion. It enables one to understand the morphing of images under the given geometric transformations. The insertions allow us to understand the dynamics of fractals and discover brand new patterns. If you have any idea what to insert into the flow and how, or wish to expand the theory of video feedback fractals, please join the forum of send us an email.
Be Intuitive!