# script to generate data files for Internet "alien worlds" competition
# I wrote these routines: gforge, composit, hcon, copyx, orb, ast_gen
# most of which are in: gforge-v1.1f.tar.gz, hutils01a.tar.gz
# (available from http://www-leland.stanford.edu/~beale/land/gforge/ )
# by John P. Beale 8/27/95

# generate a basic landscape
gforge -m 600 -d 1.7 -pe .75 .25 -pow 0.6 -lim -1 1 -name output.tga -s 0

# generate a rougher "finish" texture
gforge -m 600 -d 2.5 -limit -1 1 -pow 0.9 -name bumps.tga -s 0

# combine the two non-linearly, use high-precision floating point output
composit exp output.tga bumps.tga topo.mat 0.8
composit add output.tga topo.mat topo.mat 0.5
hcon topo.mat topo.pot -rescale

# copy the image horizontally to obtain the finished landscape topo in TGA fmt.
copyx topo.pot topo1.tga
rm topo.pot topo.mat output.tga bumps.tga

# subtract off a slope at the top edge to simulate a more gradual horizon
composit sub topo1.tga slope.gif topo2.mat
hcon topo2.mat topo2.tga 0 1
rm topo2.mat topo1.tga

# generate a spiky sphere using triangular tesselation for 'plant'
# 7th level: 3 megabyte include file  8th level: 12 meg  9th: 40 meg
gforge -s 0 -m 1000 -br 0 50 -bp 0.017 35 -pow 3.5 -t mat -li -.2 1 -pe 0 0.5
remap output.mat output.mat
orb output.mat spiky.inc 1.5 7
rm output.mat

# generate a moon
gforge -s 0 -m 1000 -br 0 300 -crat 1.9 2.5 -type mat -na moon.mat -pow 0.7
orb moon.mat moon.inc 0.7 7
rm moon.mat

# generate some asteroids with varying levels of detail
gforge -s 1 -m 100 -dim 2.5
orb output.tga a1.inc 2.5 1
gforge -s 2 -m 100 -crat 1.9 2.5 -dim 2.5
orb output.tga a2.inc 2.0 2
gforge -s 6 -m 100 -dim 2.5
orb output.tga a3.inc 1.5 3
gforge -s 7 -m 100 -dim 2.3
orb output.tga a4.inc 1.2 4
gforge -s 8 -m 200 -dim 2.2
orb output.tga a5.inc 1 5
rm output.tga

# generate include file for asteroid field
# args: name #_objs seed power_law max_radius max_dist_scale far_limit
ast_gen ast.inc 4000 0 1.8 0.03 100 10

# render the scene
gopov astplant +w800 +h600 +a0.2
