# Daniel Gries

A mathematician by training, computer coding came to me later in life in the context of building interactive web applications in Adobe Flash, which has more recently led to experiments with JavaScript and Processing. My coding experiments have increasingly drifted in an artistic direction where I mainly focus on creating something that is visually interesting. Although I tend not to insist on mathematical depth, my background in mathematics naturally shows. I especially enjoy restricting myself to using only code to generate images, without painting or post-processing through image editing programs, so that each result is a purely a visual representation of an algorithm.

These images are based on morphing between curves defined by a randomized fractal subdivision process. This subdivision process is used to define functions mapping the unit interval to itself, which are in turn used to define a sequence of "noisy" circles. A closed cylindrical object is defined by allowing a closed curve to morph from one of these circles to the next, using a cosine function for smooth interpolation. The result is an object which marries jaggedness in one direction with differentiability in a perpendicular direction.

In Fractal Cylinder 1, curves are drawn along the length of the cylinder rather than along waist curves. The changing color of the lines is controlled by a randomized fractal subdivision function. Additive color blending produces the lighting effect.

In Fractal Cylinder 2, curves are drawn along waist curves, colored by a radial gradient. Low alpha values create differing densities and transparency.

In Intersecting Fractal Cylinders, two solid cylinders with separate radial gradient colorings sweep across the canvas as they intersect.