summary refs log tree commit diff
path: root/ppmforge.html
diff options
context:
space:
mode:
authorgiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2006-12-25 03:06:05 +0000
committergiraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8>2006-12-25 03:06:05 +0000
commit1017cbebe5d5edd859e0fddad0a8600f509f4821 (patch)
tree78bdf336648566f7a7d55f42837357dea3dd674c /ppmforge.html
parent16f2ac126651015a376eba864a3a35f738b0b25a (diff)
downloadnetpbm-mirror-1017cbebe5d5edd859e0fddad0a8600f509f4821.tar.gz
netpbm-mirror-1017cbebe5d5edd859e0fddad0a8600f509f4821.tar.xz
netpbm-mirror-1017cbebe5d5edd859e0fddad0a8600f509f4821.zip
Place user guide into Subversion repository
git-svn-id: http://svn.code.sf.net/p/netpbm/code/userguide@181 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'ppmforge.html')
-rw-r--r--ppmforge.html395
1 files changed, 395 insertions, 0 deletions
diff --git a/ppmforge.html b/ppmforge.html
new file mode 100644
index 00000000..85164be5
--- /dev/null
+++ b/ppmforge.html
@@ -0,0 +1,395 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML><HEAD><TITLE>Ppmforge User Manual</TITLE></HEAD>
+<BODY>
+<H1>ppmforge</H1>
+Updated: 25 October 1991
+<BR>
+<A HREF="#index">Table Of Contents</A>
+
+<A NAME="lbAB">&nbsp;</A>
+<H2>NAME</H2>
+
+ppmforge - fractal forgeries of clouds, planets, and starry skies
+<A NAME="lbAC">&nbsp;</A>
+<H2>SYNOPSIS</H2>
+
+<B>ppmforge</B>
+
+[<B>-clouds</B>]
+[<B>-night</B>]
+[<B>-dimension</B> <I>dimen</I>]
+[<B>-hour</B> <I>hour</I>]
+[<B>-inclination|-tilt</B> <I>angle</I>]
+[<B>-mesh</B> <I>size</I>]
+[<B>-power</B> <I>factor</I>]
+[<B>-glaciers</B> <I>level</I>]
+[<B>-ice</B> <I>level</I>]
+[<B>-saturation</B> <I>sat</I>]
+[<B>-seed</B> <I>seed</I>]
+[<B>-stars</B> <I>fraction</I>]
+[{<B>-xsize</b>|<b>-width</B>} <I>width</I>]
+[{<B>-ysize</b>|<b>-height</B>} <I>height</I>]
+
+
+<P>You can abbreviate any options to its shortest unique prefix.
+
+
+<A NAME="lbAD">&nbsp;</A>
+<H2>DESCRIPTION</H2>
+
+<p>This program is part of <a href="index.html">Netpbm</a>.
+
+<B>ppmforge</B> 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 <B>ppmforge</B> are
+essentially those given by Voss[1], particularly the technique of
+spectral synthesis explained in more detail by Dietmar Saupe[2].
+
+<P>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 synthesised directly from pseudorandom numbers.
+
+<P>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 <B>-mesh</B> option; the
+larger the mesh the more realistic the pictures but the calculation
+time and memory requirement increases as the square of the mesh size.
+The fractal dimension, which you can specify with the
+<B>-dimension</B> 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.
+
+<P>Once the mesh is generated, an inverse two dimensional Fourier
+transform 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
+<B>-power</B> 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 elevation 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 resolution for best results).
+
+<P>After these calculations, we have a array of the specified size
+containing numbers that range from 0 to 1.  The pixmaps are generated
+as follows:
+
+<DL COMPACT>
+<DT><B>Clouds</B>
+
+<DD>
+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.
+
+<DT><B>Planet</B>
+
+<DD>
+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 create 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 terrain carries glaciers farther from the pole.  Based on the
+position 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.
+
+<DT><B>Night</B>
+
+<DD>
+A sequence of pseudorandom numbers is used to generate stars with a
+user specified density.
+</DL>
+
+<P>Cloud pictures always contain 256 or fewer colors and may be
+displayed on most color mapped devices without further processing.
+Planet pictures often contain tens of thousands of colors which must
+be compressed with <B>pnmquant</B> or <B>ppmdither</B> before encoding
+in a color mapped format.  If the display resolution is high enough,
+<B>ppmdither</B> generally produces better looking planets.
+<B>pnmquant</B> tends to create discrete color bands, particularly in
+the oceans, which are unrealistic and distracting.  The number of
+colors in starry sky pictures generated with the <B>-night</B> option
+depends on the value specified for <B>-saturation</B>.  Small values
+limit the color temperature distribution of the stars and reduce the
+number of colors in the image.  If the <B>-saturation</B> 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
+<B>pamdepth</B> rather than <B>pnmquant</B> or <B>ppmdither</B>.  Try
+<I>newmaxval</I> settings of 63, 31, or 15 with <B>pamdepth</B> to
+reduce the number of colors in the picture to 256 or fewer.
+
+
+<A NAME="lbAE">&nbsp;</A>
+<H2>OPTIONS</H2>
+
+<DL COMPACT>
+<DT><B>-clouds</B>
+
+<DD>
+Generate clouds.  A pixmap of fractal clouds is generated.  Selecting clouds
+sets the default for fractal dimension to 2.15 and power scale factor
+to 0.75.
+
+<DT><B>-dimension</B> <I>dimen</I>
+
+<DD> Sets the fractal dimension to the specified <I>dimen</I>, which
+may be any floating point value between 0 and 3.  Higher fractal
+dimensions create more ``chaotic'' images, which require higher
+resolution 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.
+
+<DT><B>-glaciers</B> <I>level</I>
+
+<DD>The floating point <I>level</I> 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 boundaries.
+
+<DT><B>-hour</B> <I>hour</I>
+
+<DD>When generating a planet, <b>ppmforge</b> uses <I>hour</I> as the
+&quot;hour angle at the central meridian.&quot;  If you specify <B>-hour
+12</B>, 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
+<I>hour</I>, 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 <B>-hour</B> option is specified, a random hour angle
+is chosen, biased so that only 25% of the images generated will be
+crescents.
+
+<DT><B>-ice</B> <I>level</I>
+
+<DD>Sets the extent of the polar ice caps to the given floating point
+<I>level</I>.  The default level of 0.4 produces ice caps similar to
+those of the Earth.  Smaller values reduce the amount of ice, while
+larger <B>-ice</B> settings create more prominent ice caps.
+Sufficiently large values, such as 100 or more, in conjunction with
+small settings for <B>-glaciers</B> (try 0.1) create &quot;ice
+balls&quot; like Europa.
+
+<DT><B>-inclination|-tilt</B> <I>angle</I>
+
+<DD>The inclination angle of the planet with regard to its primary
+star is set to <I>angle</I>, which can be any floating point value
+from -90 to 90.  The inclination angle can be thought of as
+specifying, in degrees, the ``season'' the planet is presently
+experiencing or, more precisely, the latitude at which the star
+transits 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 solstice.  If no inclination
+angle is specified, a random value between -21.6 and 21.6 degrees is
+chosen.
+
+<DT><B>-mesh</B> <I>size</I>
+
+<DD>A mesh of <I>size</I> by <I>size</I> will be used for the fast
+Fourier transform (FFT).  Note that memory requirements and
+computation speed increase as the square of <I>size</I>; 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).
+
+<DT><B>-night</B>
+
+<DD>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.
+
+<DT><B>-power</B> <I>factor</I>
+
+<DD>Sets the &quot;power factor&quot; used to scale elevations
+synthesised from the FFT to <I>factor</I>, 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 <B>-clouds</B> 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.
+
+<DT><B>-saturation</B> <I>sat</I>
+
+<DD>Controls the degree of color saturation of the stars that surround
+planet pictures and fill starry skies created with the <B>-night</B>
+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 <I>sat</I> approximate the appearance
+of stars from Earth orbit, where better dark adaptation, absence of
+skyglow, and the concentration 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 universe.
+
+<p>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 <B>ppmforge</B>.  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 <B>ppmforge</B>.  You
+can reverse the proportion, simulating the sky as seen in a starburst
+galaxy, by specifying a negative <I>sat</I> value.
+
+<DT><B>-seed</B> <I>num</I>
+
+<DD>Sets the seed for the random number generator to the integer
+<I>num</I>.  The seed used to create each picture is displayed on
+standard output (unless suppressed with the <B>-quiet</B> option).
+Pictures generated with the same seed will be identical.  If no
+<B>-seed</B> 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.
+
+<DT><B>-stars</B> <I>fraction</I>
+
+<DD>Specifies the percentage of pixels, in tenths of a percent, which
+will appear as stars, either surrounding a planet or filling the
+entire frame if <B>-night</B> is specified.  The default
+<I>fraction</I> is 100.
+
+<DT><B>-xsize|-width</B><I> width</I>
+
+<DD>Sets the width of the generated image to <I>width</I> 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 pixmap,
+make a square one with <B>ppmforge</B>, then use <B>pamcut</B> to
+extract a portion of the shape and size you require.
+
+<DT><B>-ysize|-height</B> <I>height</I>
+
+<DD>Sets the height of the generated image to <I>height</I> pixels.
+The default height is 256 pixels.  If the height specified exceeds the
+width, the width will be increased to equal the height.
+
+</DL>
+
+<A NAME="lbAF">&nbsp;</A>
+<H2>LIMITATIONS</H2>
+
+<P>The algorithms require the output pixmap 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
+pixmap if necessary.
+
+<P>You may have to reduce the FFT mesh size on machines with 16 bit
+integers and segmented pointer architectures.
+
+<A NAME="lbAG">&nbsp;</A>
+<H2>SEE ALSO</H2>
+
+<B><A HREF="pamcut.html">pamcut</A></B>,
+<B><A HREF="pamdepth.html">pamdepth</A></B>,
+<B><A HREF="ppmdither.html">ppmdither</A></B>,
+<B><A HREF="pnmquant.html">pnmquant</A></B>,
+<B><A HREF="ppm.html">ppm</A></B>
+
+<DL COMPACT>
+<DT>[1] 
+<DD>
+Voss, Richard F., ``Random Fractal Forgeries,'' in Earnshaw
+et. al., Fundamental Algorithms for Computer Graphics, Berlin:
+Springer-Verlag, 1985.
+
+<DT>[2]
+<DD>
+Peitgen, H.-O., and Saupe, D. eds., The Science Of Fractal Images,
+New York: Springer Verlag, 1988.
+
+</DL>
+
+<A NAME="lbAH">&nbsp;</A>
+<H2>AUTHOR</H2>
+
+<PRE>
+John Walker
+Autodesk SA
+Avenue des Champs-Montants 14b
+CH-2074 MARIN
+Suisse/Schweiz/Svizzera/Svizra/Switzerland
+    <B>Usenet:</B><A HREF="mailto:kelvin@Autodesk.com">kelvin@Autodesk.com</A>
+    <B>Fax:</B>038/33 88 15
+    <B>Voice:</B>038/33 76 33
+</PRE>
+
+<P>
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+without any conditions or restrictions.  This software is provided ``as
+is'' without express or implied warranty.
+
+<h3>PLUGWARE!</h3>
+
+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.
+
+<HR>
+<A NAME="index">&nbsp;</A>
+<H2>Table Of Contents</H2>
+<UL>
+<LI><A HREF="#lbAB">NAME</A>
+<LI><A HREF="#lbAC">SYNOPSIS</A>
+<LI><A HREF="#lbAD">DESCRIPTION</A>
+<LI><A HREF="#lbAE">OPTIONS</A>
+<LI><A HREF="#lbAF">LIMITATIONS</A>
+<LI><A HREF="#lbAG">SEE ALSO</A>
+<LI><A HREF="#lbAH">AUTHOR</A>
+</UL>
+</BODY>
+</HTML>
+
+
+