packages icon

   Level Connector 1.0beta

   Reads RAW or ASCII pgm file from stdin or from
   file specified in command line and writes binary
   pgm file to stdout.

   The input is treated as height field and the
   heights of pixels marked as free are calculated
   so that different levels are connected smoothly.
   
   The heights are found by solving Poisson's 2nd
   order differential equation in the free areas
   using modified Gauss-Seidel algorithm.

   Gauss-Seidel iteration calculates approximations
   for the [free] pixels based on previous values.
   [Inithgt] is used as the first approximation. The
   iteration stops when [maxiter] iterations are made
   or maximum difference between iterations is less
   than [limres]. If max difference reported by [stat]
   is much greater than 1 it means that the approximation
   is far from the final value and [maxiter] should be
   increased. That is, if a better solution for the
   Poisson's equation is desired. 
   
   If the input file contains no fixed areas inside
   free areas then the approximations go towards
   flat surface and [limres] should be set to 0.0.
   The iteration is in this case controlled by
   [maxiter] only.

   [Force] pushes the free areas upwards. Values greater
   than ~2 give unpredictable resuls. Negative force
   pushes downwards.

   If a pgm is generated using
   > giftopnm foo.gif| ppmtopgm > foo.pgm
   it may not preserve the original levels and some
   guessing is required to find the right [free] value.

   > giftoppm foo.gif| ppmtopgm > foo.pgm
   works fine.

   Remember to sort the colormap if you convert to gif.

   Kari Kivisalo
   kkivisal@vipunen.hut.fi
   http://www.hut.fi/~kkivisal/