Ppmforge User Manual(0) Ppmforge User Manual(0)NAMEppmforge - fractal forgeries of clouds, planets, and starry skies
SYNOPSISppmforge
[-clouds] [-night] [-dimension dimen] [-hour hour] [-inclination|-tilt
angle] [-mesh size] [-power factor] [-glaciers level] [-ice level]
[-saturation sat] [-seed seed] [-stars fraction] [{-xsize|-width}
width] [{-ysize|-height} height]
DESCRIPTION
This program is part of Netpbm(1)ppmforge generates three kinds of ``random fractal forgeries,'' the
term coined by Richard F. Voss of the IBM Thomas J. Watson Research
Center for seemingly realistic pictures of natural objects generated by
simple algorithms embodying randomness and fractal self-similarity.
The techniques used by ppmforge are essentially those given by Voss[1],
particularly the technique of spectral synthesis explained in more
detail by Dietmar Saupe[2].
The program generates two varieties of pictures: planets and clouds,
which are just different renderings of data generated in an identical
manner, illustrating the unity of the fractal structure of these very
different objects. A third type of picture, a starry sky, is synthe‐
sised directly from pseudorandom numbers.
The generation of planets or clouds begins with the preparation of an
array of random data in the frequency domain. The size of this array,
the ``mesh size,'' can be set with the -mesh option; the larger the
mesh the more realistic the pictures but the calculation time and mem‐
ory requirement increases as the square of the mesh size. The fractal
dimension, which you can specify with the -dimension option, determines
the roughness of the terrain on the planet or the scale of detail in
the clouds. As the fractal dimension is increased, more high frequency
components are added into the random mesh.
Once the mesh is generated, an inverse two dimensional Fourier trans‐
form is performed upon it. This converts the original random frequency
domain data into spatial amplitudes. We scale the real components that
result from the Fourier transform into numbers from 0 to 1 associated
with each point on the mesh. You can further modify this number by
applying a ``power law scale'' to it with the -power option. Unity
scale leaves the numbers unmodified; a power scale of 0.5 takes the
square root of the numbers in the mesh, while a power scale of 3
replaces the numbers in the mesh with their cubes. Power law scaling
is best envisioned by thinking of the data as representing the eleva‐
tion of terrain; powers less than 1 yield landscapes with vertical
scarps that look like glacially-carved valleys; powers greater than one
make fairy-castle spires (which require large mesh sizes and high reso‐
lution for best results).
After these calculations, we have a array of the specified size con‐
taining numbers that range from 0 to 1. ppmforge generates as follows:
The randomness in the image is limited before Netpbm 10.37 (December
2006) -- if you run the program twice in the same second, you may get
identical output.
Clouds A color map is created that ranges from pure blue to white by
increasing admixture (desaturation) of blue with white. Numbers
less than 0.5 are colored blue, numbers between 0.5 and 1.0 are
colored with corresponding levels of white, with 1.0 being pure
white.
Planet The mesh is projected onto a sphere. Values less than 0.5 are
treated as water and values between 0.5 and 1.0 as land. The
water areas are colored based upon the water depth, and land
based on its elevation. The random depth data are used to cre‐
ate clouds over the oceans. An atmosphere approximately like
the Earth's is simulated; its light absorption is calculated to
create a blue cast around the limb of the planet. A function
that rises from 0 to 1 based on latitude is modulated by the
local elevation to generate polar ice caps--high altitude ter‐
rain carries glaciers farther from the pole. Based on the posi‐
tion of the star with respect to the observer, the apparent
color of each pixel of the planet is calculated by ray-tracing
from the star to the planet to the observer and applying a
lighting model that sums ambient light and diffuse reflection
(for most planets ambient light is zero, as their primary star
is the only source of illumination). Additional random data are
used to generate stars around the planet.
Night A sequence of pseudorandom numbers is used to generate stars
with a user specified density.
Cloud pictures always contain 256 or fewer colors and may be displayed
on most color mapped devices without further processing. Planet pic‐
tures often contain tens of thousands of colors which must be com‐
pressed with pnmquant or ppmdither before encoding in a color mapped
format. If the display resolution is high enough, ppmdither generally
produces better looking planets. pnmquant tends to create discrete
color bands, particularly in the oceans, which are unrealistic and dis‐
tracting. The number of colors in starry sky pictures generated with
the -night option depends on the value specified for -saturation.
Small values limit the color temperature distribution of the stars and
reduce the number of colors in the image. If the -saturation is set to
0, none of the stars will be colored and the resulting image will never
contain more than 256 colors. Night sky pictures with many different
star colors often look best when color compressed by pamdepth rather
than pnmquant or ppmdither. Try newmaxval settings of 63, 31, or 15
with pamdepth to reduce the number of colors in the picture to 256 or
fewer.
OPTIONS
You can abbreviate any options to its shortest unique prefix.
-clouds
Generate clouds. An image of fractal clouds is generated.
Selecting clouds sets the default for fractal dimension to 2.15
and power scale factor to 0.75.
-dimension dimen
Sets the fractal dimension to the specified dimen, which may be
any floating point value between 0 and 3. Higher fractal dimen‐
sions create more ``chaotic'' images, which require higher reso‐
lution output and a larger FFT mesh size to look good. If no
dimension is specified, 2.4 is used when generating planets and
2.15 for clouds.
-glaciers level
The floating point level setting controls the extent to which
terrain elevation causes ice to appear at lower latitudes. The
default value of 0.75 makes the polar caps extend toward the
equator across high terrain and forms glaciers in the highest
mountains, as on Earth. Higher values make ice sheets that
cover more and more of the land surface, simulating planets in
the midst of an ice age. Lower values tend to be boring,
resulting in unrealistic geometrically-precise ice cap bound‐
aries.
-hour hour
When generating a planet, ppmforge uses hour as the 'hour angle
at the central meridian.' If you specify -hour 12, for example,
the planet will be fully illuminated, corresponding to high noon
at the longitude at the center of the screen. You can specify
any floating point value between 0 and 24 for hour, but values
which place most of the planet in darkness (0 to 4 and 20 to 24)
result in crescents which, while pretty, don't give you many
illuminated pixels for the amount of computing that's required.
If no -hour option is specified, a random hour angle is chosen,
biased so that only 25% of the images generated will be cres‐
cents.
-ice level
Sets the extent of the polar ice caps to the given floating
point level. The default level of 0.4 produces ice caps similar
to those of the Earth. Smaller values reduce the amount of ice,
while larger -ice settings create more prominent ice caps. Suf‐
ficiently large values, such as 100 or more, in conjunction with
small settings for -glaciers (try 0.1) create 'ice balls' like
Europa.
-inclination|-tilt angle
The inclination angle of the planet with regard to its primary
star is set to angle, which can be any floating point value from
-90 to 90. The inclination angle can be thought of as specify‐
ing, in degrees, the ``season'' the planet is presently experi‐
encing or, more precisely, the latitude at which the star tran‐
sits the zenith at local noon. If 0, the planet is at equinox;
the star is directly overhead at the equator. Positive values
represent summer in the northern hemisphere, negative values
summer in the southern hemisphere. The Earth's inclination
angle, for example, is about 23.5 at the June solstice, 0 at the
equinoxes in March and September, and -23.5 at the December sol‐
stice. If no inclination angle is specified, a random value
between -21.6 and 21.6 degrees is chosen.
-mesh size
A mesh of size by size will be used for the fast Fourier trans‐
form (FFT). Note that memory requirements and computation speed
increase as the square of size; if you double the mesh size, the
program will use four times the memory and run four times as
long. The default mesh is 256x256, which produces reasonably
good looking pictures while using half a megabyte for the
256x256 array of single precision complex numbers required by
the FFT. On machines with limited memory capacity, you may have
to reduce the mesh size to avoid running out of RAM. Increasing
the mesh size produces better looking pictures; the difference
becomes particularly noticeable when generating high resolution
images with relatively high fractal dimensions (between 2.2 and
3).
-night A starry sky is generated. The stars are created by the same
algorithm used for the stars that surround planet pictures, but
the output consists exclusively of stars.
-power factor
Sets the 'power factor' used to scale elevations synthesised
from the FFT to factor, which can be any floating point number
greater than zero. If no factor is specified a default of 1.2
is used if a planet is being generated, or 0.75 if clouds are
selected by the -clouds option. The result of the FFT image
synthesis is an array of elevation values between 0 and 1. A
non-unity power factor exponentiates each of these elevations to
the specified power. For example, a power factor of 2 squares
each value, while a power factor of 0.5 replaces each with its
square root. (Note that exponentiating values between 0 and 1
yields values that remain within that range.) Power factors
less than 1 emphasise large-scale elevation changes at the
expense of small variations. Power factors greater than 1
increase the roughness of the terrain and, like high fractal
dimensions, may require a larger FFT mesh size and/or higher
screen resolution to look good.
-saturation sat
Controls the degree of color saturation of the stars that sur‐
round planet pictures and fill starry skies created with the
-night option. The default value of 125 creates stars which
resemble the sky as seen by the human eye from Earth's surface.
Stars are dim; only the brightest activate the cones in the
human retina, causing color to be perceived. Higher values of
sat approximate the appearance of stars from Earth orbit, where
better dark adaptation, absence of skyglow, and the concentra‐
tion of light from a given star onto a smaller area of the
retina thanks to the lack of atmospheric turbulence enhances the
perception of color. Values greater than 250 create ``science
fiction'' skies that, while pretty, don't occur in this uni‐
verse.
Thanks to the inverse square law combined with Nature's love of
mediocrity, there are many, many dim stars for every bright one.
This population relationship is accurately reflected in the
skies created by ppmforge. Dim, low mass stars live much longer
than bright massive stars, consequently there are many reddish
stars for every blue giant. This relationship is preserved by
ppmforge. You can reverse the proportion, simulating the sky as
seen in a starburst galaxy, by specifying a negative sat value.
-seed num
Sets the seed for the random number generator to the integer
num. The seed used to create each picture is displayed on stan‐
dard output (unless suppressed with the -quiet option). Pic‐
tures generated with the same seed will be identical. If no
-seed is specified, a random seed derived from the date and time
will be chosen. Specifying an explicit seed allows you to re-
render a picture you particularly like at a higher resolution or
with different viewing parameters.
-stars fraction
Specifies the percentage of pixels, in tenths of a percent,
which will appear as stars, either surrounding a planet or fill‐
ing the entire frame if -night is specified. The default frac‐
tion is 100.
-xsize|-width width
Sets the width of the generated image to width pixels. The
default width is 256 pixels. Images must be at least as wide as
they are high; if a width less than the height is specified, it
will be increased to equal the height. If you must have a long
skinny image, make a square one with ppmforge, then use pamcut
to extract a portion of the shape and size you require.
-ysize|-height height
Sets the height of the generated image to height pixels. The
default height is 256 pixels. If the height specified exceeds
the width, the width will be increased to equal the height.
LIMITATIONS
The algorithms require the output image to be at least as wide as it is
high, and the width to be an even number of pixels. These constraints
are enforced by increasing the size of the requested image if neces‐
sary.
You may have to reduce the FFT mesh size on machines with 16 bit inte‐
gers and segmented pointer architectures.
SEE ALSOpamcut(1) , pamdepth(1) , ppmdither(1) , pnmquant(1) , ppm(5)
[1] Voss, Richard F., ``Random Fractal Forgeries,'' in Earnshaw et.
al., Fundamental Algorithms for Computer Graphics, Berlin:
Springer-Verlag, 1985.
[2] Peitgen, H.-O., and Saupe, D. eds., The Science Of Fractal
Images, New York: Springer Verlag, 1988.
AUTHOR
John Walker
Autodesk SA
Avenue des Champs-Montants 14b
CH-2074 MARIN
Suisse/Schweiz/Svizzera/Svizra/Switzerland
Usenet:kelvin@Autodesk.com
Fax:038/33 88 15
Voice:038/33 76 33
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, with‐
out any conditions or restrictions. This software is provided ``as
is'' without express or implied warranty.
PLUGWARE!
If you like this kind of stuff, you may also enjoy ``James Gleick's
Chaos--The Software'' for MS-DOS, available for $59.95 from your local
software store or directly from Autodesk, Inc., Attn: Science Series,
2320 Marinship Way, Sausalito, CA 94965, USA. Telephone: (800)
688-2344 toll-free or, outside the U.S. (415) 332-2344 Ext 4886. Fax:
(415) 289-4718. ``Chaos--The Software'' includes a more comprehensive
fractal forgery generator which creates three-dimensional landscapes as
well as clouds and planets, plus five more modules which explore other
aspects of Chaos. The user guide of more than 200 pages includes an
introduction by James Gleick and detailed explanations by Rudy Rucker
of the mathematics and algorithms used by each program.
netpbm documentation 25 October 1991 Ppmforge User Manual(0)