ppmforge(1) - phpMan

Command: man perldoc info search(apropos)  


ppmforge(1)                                        General Commands Manual                                       ppmforge(1)

NAME
       ppmforge - fractal forgeries of clouds, planets, and starry skies

SYNOPSIS
       ppmforge [-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
       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  embody-
       ing  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 gen-
       erated  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.

       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 memory 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 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 num-
       ber 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  resolution  for  best  re-
       sults).

       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:

       Clouds    A colour map is created that ranges from pure blue to white by increasing admixture (desaturation) of  blue
                 with  white.  Numbers less than 0.5 are coloured blue, numbers between 0.5 and 1.0 are coloured with corre-
                 sponding 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 coloured 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 plan-
                 et.  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 colour 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 colours and may be displayed on most colour mapped devices without further
       processing.  Planet pictures often contain tens of thousands of colours which must be compressed with ppmquant or pp-
       mdither  before  encoding  in  a colour mapped format.  If the display resolution is high enough, ppmdither generally
       produces better looking planets.  ppmquant tends to create discrete colour bands, particularly in the  oceans,  which
       are  unrealistic  and distracting.  The number of colours in starry sky pictures generated with the -night option de-
       pends on the value specified for -saturation.  Small values limit the colour temperature distribution  of  the  stars
       and  reduce  the  number of colours in the image.  If the -saturation is set to 0, none of the stars will be coloured
       and the resulting image will never contain more than 256 colours.   Night  sky  pictures  with  many  different  star
       colours often look best when colour compressed by pnmdepth rather than ppmquant or ppmdither.  Try newmaxval settings
       of 63, 31, or 15 with pnmdepth to reduce the number of colours in the picture to 256 or fewer.

OPTIONS
       -clouds   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.

       -dimension dimen
                 Sets  the  fractal dimension to the specified dimen, 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.

       -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 ter-
                 rain 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.

       -hour hour
                 When generating a planet, hour is used 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
                 centre 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 speci-
                 fied, a random hour angle is chosen, biased so that only 25% of the images generated will be crescents.

       -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  set-
                 tings  create more prominent ice caps.  Sufficiently 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 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 south-
                 ern  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  speci-
                 fied, 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 transform (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  be-
                 comes  particularly  noticeable  when generating high resolution images with relatively high fractal dimen-
                 sions (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 synthe-
                 sis 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 fac-
                 tor 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 colour saturation of the stars that surround 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  colour  to  be  perceived.  Higher values of sat 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 colour.  Values greater than 250 create ``science fiction'' skies that, while  pretty,  don't  occur  in
                 this universe.

                 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  ppm-
                 forge.  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 standard output (unless suppressed with the -quiet option).  Pictures 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 filling the entire frame if -night is specified.  The default fraction 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 pixmap, make a square one with ppmforge, then use pnmcut to ex-
                 tract 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.

       All flags can be abbreviated to their shortest unique prefix.

BUGS
       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.

       You may have to reduce the FFT mesh size on machines with 16 bit integers and segmented pointer architectures.

SEE ALSO
       pnmcut(1), pnmdepth(1), ppmdither(1), ppmquant(1), ppm(5)

       [1]  Voss,  Richard F., ``Random Fractal Forgeries,'' in Earnshaw et. al., Fundamental Algorithms for Computer Graph-
            ics, 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 AT 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,  without 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  as-
       pects of Chaos.  The user guide of more than 200 pages includes an introduction by James Gleick and detailed explana-
       tions by Rudy Rucker of the mathematics and algorithms used by each program.

                                                       25 October 1991                                           ppmforge(1)

Generated by phpMan Author: Che Dong On Apache Under GNU General Public License - MarkDown Format
2026-05-21 09:47 @216.73.216.105 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0!Valid CSS!

^_back to top