## Ornamental Design, Geometry & Computer Graphics Final Project

''Roulettes in Spherical Geometry - Guilloche Patterns on Fabergé Eggs''

A final course project for CS 798 - Ornamental Design, Geometry & Computer Graphics implementing cycloid patterns onto planar, spherical and egg-like surfaces akin to the guilloche work of Fabergé eggs.

'''Erika Harrison'''

Source, Paper

----

## Background

Spring, a season of new birth and fertility, has - possibly since pre-historic times - been celebrated in Eastern European cultures with the decorating of eggs. Between 1885 and 1917, the Russians Czar - started by Alexander III, and continued by his son, Nicholas II - expanded the decorating of eggs by annually commissioning jewelled eggs for the Czaritsa from the jeweller Karl Fabergé.

One of the interesting decoration techniques used on the eggs was the use of Guilloche machining on the metallic egg surface. This machining technique is rarely used today, but can be seen in specialized hand-crafted watches. Further, the geometric curves or designs were historically used on paper money to deter money fraud.

The inherent complexity of these patterns is mainly based on the intricate turning machines used in the engraving process. Several metal gears, and swinging pendants are combined and specially calibrated so when run produce an interesting, but often hard to replicate design.

Several pieces of software presently exist for the production of Guilloche patterns on a planar surface. However, there appears to be limited research on curved surfaces, such as what occurs on a Fabergé egg. Given the rotary movement of a mechanical gear, construction of cycloid patterns in spherical geometry is a logical first step. The ultimate goal in reproducing Guilloche patterns on eggs becomes the ability to produce a generalized roulette pattern on the eggs.

----

### Implementation 1 : Stereographic Roulette

'''Basic Idea:''' Use a general equation to create planar Guilloche patterns, and project them onto a sphere.

Guilloche technique, as described above, is a type of cycloid. To generalize this, we'll look at roulettes, which are parametrically described using the following:

A, B, C, D, E, F, G, H are user controlled parameters, t increasing with time.

Of the four common projection methods - orthographic, gnomonic, stereographic, equal area - we choose to work with stereographic to preserve the geometric design. Stereographic project converts the 2D (x, y) coordinates of the planar Guilloche pattern to the 3D (x, y, z) coordinates by:

Rendering this out onto a sphere, we immediately recognize that this naïve approach does not give us the desired designs as exhibited on Fabergé eggs.

----

### Implementation 2 : Spherical Helix/Orthographic Epicycloid

'''Basic Idea:''' Spherical Helixs orthogonally projected onto the plane given epicycloid patterns.

Here, we're working backwards - from sphere to plane, rather than plane to sphere as above - to see if we can generalize the spherical helix to form generalized cycloids, or trochoids. Spherical helixs can be described parametrically by the following:

Where r is the radius of the sphere, o is the angle of the helix with respect to the z axis, and w is the angle around the sphere over time. The orthographic projection produces an epicycloid with the parameters:

where an epicycloid has the following parametric coordinates:

Rendering this out onto the sphere and plane, we immediately recognize that this indeed appears to be a valid construction of Guilloche patterns. However, it does not cover all possible designs, such as fancier curves as produced by trochoids.

----

### Implementation 3 : Spherical Trochoids

'''Basic Idea:''' Mathematically parse out how an actual circle would roll along another circle on a sphere – both circles being continuously in contact with the sphere.

This is a simple rotation problem, and can be solved in the following steps:

# Lie a circle of the user-defined size along the z-axis, such that it lies continuously in contact with the sphere. (Simple math can compute this). # Compute a point on a circle, as it travels over time t. # Rotate the circle about the z-axis, as the arc length would have covered over t. # Rotate about the x-axis, the user-defined distance from the equator of the sphere. # Rotate about the y-axis, the angle which would have resulted from the distance travelled by the circle rolling along the t arc length.

Once these transformations have been complete, the point is then located where it should appear at the given time T. This gives the computations required to create a cycloid on a sphere. To generalize this to a trochoid, in step #2, we can move the point some user-defined distance from the rotating circle (inside or outside).

Simple orthographic projection on to the XY plane has been included so as to provide a planar representation, and better compare to 2D design.

----

## Eggify

'''Basic Idea:''' Given a sphere, deform it into the shape of an egg.

This can be easily handled by processing a given point on a unit sphere. For each vertex on the unit-sphere:

# Store the y value of the vertex. # Based on the y value, scale the x and z values closer to the y axis. # Restore the y value, and return the new vertex.

A basic implementation of this performs a simple scaling check. If the y value is less than half, perform a linear scale on the x and z values. Otherwise, perform a scale on the x and z values based on a partial sinusoidal curve as it relates to the y position. Although not ideal, it demonstrates the ease of sphere to egg conversion.

----

## Future Work

There are several extensions that could be applied to the above application. In order of increasing complexity:

* Transform the position of the curve to any desired location on the sphere. Presently the rotation only occurs around the Y axis. With an easy transformation to a given curve, the user can allow the curve to rotate about any axis. * Using polygonal meshes as opposed to basic line segments for curve representation. * Improve the "eggify" scaling, to better resemeble an egg * Allow overlapping (and possibly interweaving) of designs * Use a technique similar to constructive solid geometry to subtract the curves from the solid egg shape, given a more machined look. * Roll any closed curve along any other (ideally closed) curve (curves all in spherical geometry). As with the algorithm above, one can parse out the arc length travelled, and with a bit more math determine the tangency of the rolling curve to the static curve. * Add rendering styles resembling standard pysanka painting, or alternatively carve the designs into egg, treating it as a shell (rather than a solid egg)

----

## References

### Eggs & History

* '''General:''' Easter Egg, Pysanka, Pisanka, Egg Decorating, Hutsul (known for their egg decorating), Easter, Batik (egg decorating undergoes a batik-like process) * '''Fabergé:''' Fabergé Eggs, Company, Peter Carl Fabergé, Treasures, Eggs * '''Other Examples:''' Imperial Porcelain Eggs, Ukrainian Easter Eggs, Pysanky, Hand Painted, Fractal Pysanka

### Guilloche

* '''General & Other Techniques:''' Guilloche, Engine Turning, Cloisonné Enamel Process, Champlevé, Vitreous Enamel * '''Companies:''' Vivin Alexander, RGM Watches, Excourse * '''Examples:''' Art Enamels, Money

### Mathematics

* '''Curves:''' General, Guilloche, Involute, Trochoid, Roulette, Dragon, Examples, Cycloids * '''Spirograph:''' Spirograph, Java Applet, Examples, Examples * '''Spherical Projection:''' Projections, Gnomonic

* '''MathWorld:''' Guilloche, Spirograph, Roulette, Hypotrochoid, Hypocycloid, Cycloid, Epicycloid, Epitrochoid, Trochoid, Spherical Curve, Spherical Helix

----

April 22, 2006