The essential feature I am trying to produce is that when a tine moves
through regions of different color inks, it stretches the boundaries
between the inks to bend around it. If a blue ink region is
surrounded by a red ink region, in the deformation induced by the
movement of the tine through it, the blue region is still surrounded
by the red region.
A mapping taking each point in the plane to its destination after the
tine has moved through the area will be represented by a vector-valued
function F from a plane (ℝ×ℝ) to a plane.
Further, F will be a
a continuous bijection.
of homeomorphisms is also a homeomorphism. So if we have a
homeomorphism for a single stroke, we can compose the functions
representing each movement together to create a more complicated
homeomorphism where F1 will be the first
stroke and Fn will be the last stroke of the sequence:
Note that order is important here. The last stroke, Fn,
will be the most obvious in the marbled image.
Ink boundary curves which are continuous in the plane are mapped to
continuous curves by homeomorphisms, no matter how much they fold and
stretch. In order for homeomorphisms to remain reversible, we set a
maximum displacement z for the deformation each tine
2-Dimensional Fluid Mechanics
Consider an unbounded plane containing a 2-dimensional incompressible
Associated with F(x,y) is a vector field
returning the vector displacement at each coordinate. Along
the y axis we introduce a displacement z,
displacement will not affect points far away from the x axis;
so the limit of H(x,y) tends to zero as
the magnitude of x grows. Because the fluid is incompressible,
of H is zero everywhere. Because its flow is laminar, it is
uniform in the direction of motion, y:
Thus H(x,y) depends only on x.
Furthemore, only the y component
of H(x,y) depends on x.
the displacements to either side of x=0 will be equal and in
the same direction. So we will consider f(x)
for x≥0 only. Because the flow is laminar, displacements
induced by z travel along the x axis should be
proportional to z. Let A=f(a).
Then f(2a) will be reduced from A by the same
proportion as A was reduced from z.
The only continuous real functions satisfying these constraints
with independent parameter 0<u<1 related to the
A key property of this marbling transform is that the displacement
parallel to the line is dependent only on the perpendicular distance
from the line. Because of this, the inverse transform is simply the
forward transform with its displacement negated. We will use this
property later on.
It is remarkable that an exact, closed-form expression is derived for
the asymptotic equilibrium of a fluid-dynamics problem using little
more than boundary conditions and symmetry.
Most of the marbling images are linked to PostScript files (with
is a programming language; but these files use a very limited
subset. There are links to language reference manuals and tutorials
at the bottom
You can run PostScript programs and view the images they generate
using GSview, available from
At the start of the real marbling process, inks are dropped from one
or more locations to form expanding disks on a substrate. The
mathematics is described in
Dropping Ink. For now, we just
want an ink pattern which shows subsequent displacements. In my first
renderings, 5 virtual inks are dropped from the center to form 25
concentric rings of equal radial width.
The boundaries between virtual ink rings will be traversed using the
circle algorithm; although walking the circles using coordinates
generated by sin and cos would work as well. The
angular step size is made inversely proportional to the ring radius,
making the distance between successive points uniform.
[These images are linked to the
PostScript files which generated them.]
A Single Stroke
For a single tine's vertical stroke, each (x, y)
coordinate in the ink-circle plane is mapped to
Fv displaces each point vertically by
an amount exponentially decreasing with horizontal distance from the
tine's x-coordinate xL.
|Fv(x, y) =
||x, y +
The scalars z and u control the maximum displacement and
sharpness of the bends, respectively. An earlier version of this work
used hyperbolic approximations parametrized by (z
and) c>0. A rough equivalence
is u=1/21/c. The larger z is,
the larger the maximum displacement. The smaller c is, the
sharper the bends are.
The transform for straight, horizontal strokes is to displace each
point horizontally by an amount exponentially decreasing with vertical
distance from the tine's y-coordinate
|Fh(x, y) =
z · u
+ x, y
The lines connecting the mapped coordinates of points adjacent on the
circle form a closed curve. The region inside this boundary curve is
then filled with the outermost ink color.
This rendering process, implemented directly in PostScript, is
repeated for the next largest circle and so on until the projections
of all the ink circles have been filled with their respective ink
Because the composition of homeomorphisms is a homeomorphism, the
mapping functions for the strokes can be composed, forming a single
function. With this composite function taking the place of the single
stroke function in the above algorithm, we are marbling!
After verifying that a combing and its reverse (eg. North and South)
cancel each other, the next combing sequence to try is a
Where operators do not commute, composing operators and their inverses
in an asymmetrical sequence often reveals essential properties of
their mathematical interactions.
The image to the right is the result of straight combings (7 tines)
in the North, East, South, then West directions.
[These images are linked to the PostScript files which
The image to the left was combed North, East, South, then East.
Although the depth of combing was the same as the previous picture,
its character is very different.
This calculation can be extended to lines with arbitrary slope. If
L is the tine-line, N is a unit vector perpendicular to
L, B a point on the tine line, and P a point,
then P's minimum distance from the line is d, the length
of the projection of vector PB onto
Given M, the unit vector in the direction of the tine line
L, the (vector) mapping for point P is:
Circular tine tracks are also compatible with laminar incompressible
flow. In this case points are displaced along arcs around a center
Because the displacements tend to zero far from the center, outside of
the tine track the exponentially decreasing magnitude of the
displacements again applies. Inside of the tine track, however,
asymptotic considerations don't apply. This finite area could, for
instance, rotate as a rigid disk. Using the same formula on the
inside as the outside lets circular tine tracks with very large radii
behave similarly to straight tine tracks.
The length l of the displacement arc, and its angle a
subtended at C are:
The point P is thus mapped to:
|FC(P) = C + (P−C)
The figure to the left shows the paths of the virtual tines moving
through the field of view. Those clockwise circular motions result in
the marbling shown to the right.
Arcs of increasing radius whose centers track away from the field of
view create a fan like that at the top of this article.
Outside the circle of radius r consider the arc-length l
as a function of the distance h between P
and C, z, u, and r:
It follows that:
This allows us to reduce the fourth argument to zero, resulting in a
vortex centered at C. Given z, u, and r
for a vortex, the length l of the displacement arc, and its
angle a subtended at C are:
If h = 0, then
FV(C) = C.
Otherwise, h > 0, and the point P is mapped to:
|h = ||P−C||
(z·u−r) · uh
|FV(P) = C + (P−C)
The next chapter deals with tine tracks with
other than straight or circular trajectories.
Copyright © 2003, 2004, 2007, 2010, 2011, 2016 Aubrey Jaffer
I am a guest and not a member of the MIT Computer Science and Artificial Intelligence Laboratory.
My actions and comments do not reflect in any way on MIT.|
|Topological Computer Graphics
|agj @ alum.mit.edu