Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
ppmforge(1)
Edit
PageHistory
Diff
Info
LikePages
ppmforge !!!ppmforge NAME SYNOPSIS DESCRIPTION OPTIONS BUGS SEE ALSO AUTHOR ---- !!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 forg- eries,'' 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 synthesised di- rectly from pseudorandom numbers. The generation of planets or clouds begins with the prepa- ration 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 require- ment increases as the square of the mesh size. The frac- tal 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 frac- tal 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 ampli- tudes. 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 __-pow- er__ 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 en- visioned by thinking of the data as representing the ele- vation of terrain; powers less than 1 yield landscapes with vertical scarps that look like glacially-carved val- leys; powers greater than one make fairy-castle spires (which require large mesh sizes and high resolution for best results). 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 (desatura- tion) of blue with white. Numbers less than 0.5 are coloured blue, numbers between 0.5 and 1.0 are coloured 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 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 thou- sands of colours which must be compressed with __ppmquant__ or __ppmdither__ 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 val- ues 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 __pn- mdepth__ rather than __ppmquant__ or __ppmdither__. Try ''newmaxval'' settings of 63, 31, or 15 with __pnmdepth__ to reduce the num- ber 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 ''di- men'', which may be any floating point value be- tween 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 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 geometrical- ly-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__ op- tion is specified, a random hour angle is cho- sen, biased so that only 25% of the images gen- erated 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__ settings 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 specify- ing, 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 inclina- tion 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 transform (FFT). Note that memory re- quirements 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 num- bers required by the FFT. On machines with lim- ited memory capacity, you may have to reduce the mesh size to avoid running out of RAM. Increas- ing the mesh size produces better looking pic- tures; the difference becomes particularly no- ticeable when generating high resolution images with relatively high fractal dimensions (between 2.2 and 3). __-night__ A starry sky is generated. The stars are creat- ed by the same algorithm used for the stars that surround planet pictures, but the output con- sists exclusively of stars. __-power__ ''factor'' Sets the ``power factor'' used to scale eleva- tions 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__ op- tion. 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 val- ues 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 re- semble the sky as seen by the human eye from Earth's surface. Stars are dim; only the brightest activate the cones in the human reti- na, causing colour to be perceived. Higher val- ues 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 fic- tion'' skies that, while pretty, don't occur in this universe. Thanks to the inverse square law com- bined with Nature's love of mediocrity, there are many, many dim stars for every bright one. This population relationship is accurately re- flected in the skies created by __ppmforge__. Dim, low mass stars live much longer than bright mas- sive 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. Specify- ing an explicit seed allows you to re-render a picture you particularly like at a higher reso- lution 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. Im- ages 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 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. All flags can be abbreviated to their shortest unique pre- fix. !!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 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 soft- ware 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 im- plied 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 di- rectly 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'' in- cludes 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 de- tailed explanations by Rudy Rucker of the mathematics and algorithms used by each program. ----
3 pages link to
ppmforge(1)
:
pbmfilters(1)
Man1p
ppm(5)
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.