Kleinian Marble Examples
The Kleinian Marble examples are based on an Orbit Trap called Kleinian Group. The Kleinian Group is a stand-alone fractal. It is implemented as an Orbit Trap so it can take advantage of Orbit Trap related features in the Fractal Science Kit, but it does not need the normal orbit processing; i.e., I set the Max Dwell property found in the Orbit Trap Orbit Generation section on the Mandelbrot / Julia / Newton page, to 1, eliminating the normal orbit processing.
The examples are composed of 2 orbit traps: the Kleinian Group orbit trap (a set of disks that fill the unit circle), and a Circle orbit trap that borders the unit circle. I use a circle inversion transformation to reflect the inside of the unit circle to the outside of the circle, and thereby fill the complex plane. Then I apply 1 or more Transformations to alter the image. You can create lots of variations by changing the Transformations applied to the fractal.
Each disk in the Kleinian Group has an associated index value based on how the disk was formed. I use this index value to determine how to color the disk. This is described in detail below.
Kleinian Group fractals, and the methods used to produce them, are described in the excellent book Indra's Pearls - The Vision of Felix Klein by David Mumford, Caroline Series, and David Wright. For additional details, see David Wright's Indra's Pearls site.
The Kleinian Marble examples are based on an Orbit Trap called Kleinian Group. There are a few properties associated with the trap that are related to quality and also affect performance. When you are exploring, you can improve performance by adjusting these properties on the trap's properties page.
Open the orbit trap's properties page:
Depth, Radius Cutoff, and Min Radius, control the number of circles that are generated to define the fractal. Depth is the depth of recursion used in the algorithm. Radius Cutoff is the minimum radius of circles placed on the processing stack and is used to terminate the recursion loop early on selected branches. Min Radius is the minimum radius required for a circle to be displayed.
You can increase Depth and/or decrease Radius Cutoff or Min Radius to fill in the gaps between circles but these changes can cause dramatic increases in processing time. If you make a change that seems to be taking forever, you should click the Cancel Display command on the Tools menu of the Fractal Window to terminate the processing. Then try adjusting these properties to reduce the processing (i.e., decrease Depth and/or increase Radius Cutoff or Min Radius).
When you are exploring, you should set Depth to 32, Radius Cutoff to 0.004, and Min Radius to 0.004. This will greatly improve performance at the expense of quality. You can reset them later when you find an image you wish to save.
Change the Transformation
You can apply a transformation to the fractal.
The examples all have 2 transformations: Composite Function and Circle Inversion (Conditional). The Circle Inversion (Conditional) maps the inside of the circle that bounds the Kleinian Group to the outside of the circle, thereby filling the complex plane. It is important that the Circle Inversion (Conditional) transformation remain at the bottom of the list of transformation as you play with changing the transformations as described in this section.
Execute the Home command on the View menu of the Fractal Window to reset the fractal to the default position/magnification before you adjust the transformation. Then change the transformation and Zoom In to interesting areas of the transformed image.
To change the transformation applied to each orbit point prior to passing it to the orbit trap, select the transformation's properties page:
Set the F(z) property to one of the complex functions in the list. You can change some of the other properties on this page for more variations.
You can also use a different transformation altogether. Select the Composite Function page, and change the Based On property to select a transformation and then open the transformation's properties page (found under the transformation in the page hierarchy), and play with the transformation's properties. See Transformation Support for details.
To add additional transformations, select Transformation 1:
Click the New toolbar button to add a new Identity transformation to the bottom of the list, and then click the Move Up toolbar button to move the new transformation above the Circle Inversion (Conditional) transformation. Normally, I move the new transformation to the top of the list, but it can be placed anywhere above the Circle Inversion (Conditional) transformation. See Transformation Array for details.
Then select the Identity transformation:
Change the Based On property to select a transformation and then open the transformation's properties page (found under the transformation in the page hierarchy), and play with the transformation's properties. See Transformation Support for details.
Change the Kleinian Group Orbit Trap Properties
Open the Kleinian Group Orbit Trap properties page:
The Kleinian Group Orbit Trap can be changed in many different ways but only some of these changes will work with these examples.
Depth, Radius Cutoff, and Min Radius, control the number of circles that are generated to define the fractal and were discussed above in the Performance section.
The other properties that you can change are: Example, UCG Transform, and Angle.
You can change the Example property to any of the following values:
The remaining values generate disks outside the unit circle and do not work with these examples. You can experiment with these other choices outside the context of the Kleinian Marble examples.
UCG Transform can be checked to pull the circles off center or change the layout in some way. You can use UCG Point and UCG Angle to control the effect. UCG Point is a point in the unit circle and increases the effect as you move away from the origin toward the border of the unit circle. Note that you may need to increase Max Radius if your changes increase the size of any of the disks beyond the value of Max Radius. You can reset Max Radius to 1 to be sure to display all the disks.
Angle simply rotates the Kleinian Group Orbit Trap about the origin.
Play with Color
Each disk in the Kleinian Group has an associated index value based on how the disk was formed. I use this index value to determine how to color the disk. The index values range from 0 to 3. Index 4 is mapped to the border Circle orbit trap.
Note that when deciding on how to map each disk to a color, you need to know what the index value is for each of the disks, since the index is used to map the disk to a specific color. To this end, you can open the Information Window, and click on a disk in the Fractal Window to display the disk's index value (along with lots of other data). The disk's index is given by the Trap Index field.
The examples use the Index Map Orbit Trap Master Controller to map the trap's index value to a color controller to color the trap. The trap index for the examples, ranges from 0 to 4, for a total of 5 index values. The first 4 are associated with the Kleinian Group disks, and the last (index 4), is associated with the border circle around the Kleinian Group. The index values are mapped to 1 of 4 color controllers.
The master controller maps each index to 1 of the 4 Orbit Trap Controllers used by the examples to color the orbit trap. The table below gives the mapping.
Index 0 is mapped to controller 2 (blue), index 1 and 3 are mapped to controller 3 (white), index 2 is mapped to controller 1 (red), and index 4 (the border circle) is mapped to controller 0.
You can view the mapping by selecting the master controller's Index/Controller Map properties page:
Each of the 4 color controllers are called Pattern Map - Perlin Noise. These controllers use the gradient and the controller settings to define the color/appearance of the trap. Controller 0 is used for the border circle, controller 1 is used for the red disks, controller 2 is used for the blue disks, and controller 3 is used for the white disks.
You can change these controllers to control the colors assigned to the disks.
Copyright © 2004-2019 Ross Hilbert