Crystal Art

Initializing live version
Download to Desktop

Requires a Wolfram Notebook System

Interact on desktop, mobile and cloud with the free Wolfram Player or other Wolfram Language products.

This is the author's third venture into creating artistic images from simple two-dimensional structures.


The idea behind this Demonstration is the growth of crystals (think of snowflakes, etc.). Starting with a symmetrical shape, more (usually smaller) shapes are added at each corner, then even more (and even smaller) shapes are added at each corner of the small shapes.

Randomizing buttons ("rl*" and "rl") allow you to easily create thousands of artistic images of great variety. Use the many controls to fine-tune your creations. Explore!


Contributed by: Karl Scherer (March 2011)
Open content licensed under CC BY-NC-SA




Each round of sprouting new shapes is called a "level". In each round you can choose to use the same types of figures or a different type in each level. The types of figures available are circles, petal-like sets of triangles, regular polygons, and three types of stars.

There are ten examples stored (see the "examples" drop-down list), but they only give a small glimpse into the range of images possible.

You can change the data per level manually or you may opt to click one of the randomizing buttons ("rl*" and "rl", see below) to let the system quickly create new crystals.

There are three levels of growth implemented. The items in the third level are only displayed if the "number of elements" shown at the top left is less than 300. If more items were allowed in the third level, the program would abort. You can influence this number by changing the "vertices" number of levels 1 and 2.


Any changes in the controls are automatically stored and executed. When changing a control of a complex picture, click the desired position of a slider instead of moving the slider across. This avoids the computer continuously updating the image while the slider is moved. Do not click or change the controls too fast after each other, but rather wait until the image has been updated.

The "shift" control shifts the center of the screen to the north, east, south, or west by a twentieth of the screen size. Selection "0" sets the center to , which is the default in most given examples.

All controls below the "level" selection are level-specific.

Type: For shape type "ellipse" the associated "vertices" are simply sprouting points at the rim of the disk. The control "large rotation" shifts the sprouting vertices around the rim of the ellipse. The control "small rotation" is ignored here.

The shape type "elliptic polygon" is a squashed regular polygon with ellipse axes "large radius" and "short radius". The control "large rotation" shifts the sprouting vertices around the rim of the ellipse. The control "small rotation" rotates the ellipse around its center.

The type "petals" is a set of triangles, arranged like petals of a flower around a center, with gaps between the petals. The two "radius" sliders control how far the vertices are from the center of the shape. The "rotation" sliders control the angle of these vertices around the center.

Types "star 1a" and "star 1b" are just a typical star shape. The "small rotation" is ignored here. In "star 1a" only the tips of the star sprout a new shape; in "star 1b" all vertices do so.

Type "star 2" uses "small rotation", which leads to more complicated star-type shapes. In "star 2a" only the tips sprout a new shape; in "star 2b" all vertices do so.

Subtypes "star 2c" and "star 2d" are similar to 2a and 2b, but additionally the large radius is varied in a pseudorandom way, controlled by the "seed" slider.

Type "star 3" has the vertices of the star at a pseudorandom distance from the center. This distance varies between the small and the large radius. In "star 3a" only every second vertex sprouts a new shape.

The pseudorandomness of "star 3" is controlled by a slider called "seed". The "pseudorandomness" guarantees that for the same settings you always get the same image, while the seed slider makes a wide range of complicated structures available.

Vertices: This gives the number of corners of a regular polygon, number of tips of a star, or number of connection points for a disk. Not all vertices form a shape; they may be sprouting points for a new figure, depending on which type of figure you chose.

Large radius: This controls the size of the disk, polygon, or stars (the distance from center to tips).

Large rotation: This gives the rotation of the large radius around center (in degrees).

Small radius: This is the distance from the center to the inner vertices of a star.

Small rotation: This gives the rotation of the small radius around the center (in degrees), in addition to the large rotation.

Effect: The various "effect" options distort the images and lead somewhat away from the crystal-creation idea, but they often result in the most artistic images. The effects only work on levels 2 and 3. The effects do not work on the shape types "ellipse" and "petals".

Color scheme: For most color schemes, the three color sliders control the red, green, and blue component of a color (RGB).

"monochrome RGB": All items in the current level will have the selected color RGB.

"pastel RGB": The items of the current level will have colors pseudorandomly positioned between black and the selected RBG color.

"shades of RGB": Varies the red, green, and blue components pseudorandomly between zero and the selected slider setting.

"black or white": Each item of the current level will have either white or black pseudorandomly assigned to it.

"random gray": The items of the current level will have gray levels between white and black. Which item is black and which is white is decided pseudorandomly.

The other color schemes work in more complicated ways; explore!

The "pseudorandomness" guarantees that for the same settings you always get the same image. The pseudorandomness can be somewhat controlled by the three color sliders.

Action: To get the original setting back, use the "action" buttons. You can reset the current level ("rs"), or all levels ("rs*), which includes the background color, zoom setting, and shift.

You can copy the control data of the current level to all other levels with "c*".

You can randomize the control data of the current level by clicking "rl", or randomize the control data of all levels with "rl*".

Feedback (field required)
Email (field required) Name
Occupation Organization
Note: Your message & contact information may be shared with the author of any specific Demonstration for which you give feedback.