File: print_alg.c

package info (click to toggle)
xmountains 2.7-2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 176 kB
  • ctags: 222
  • sloc: ansic: 2,623; makefile: 7
file content (50 lines) | stat: -rw-r--r-- 2,217 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>

#define P(A) fprintf(stderr,"%s\n",A)
void print_algorithm()
{
P("This program uses a modified form the mid-point displacement algorithm");
P("");
P("The mid-point displacement algorithm is a recursive algorithm, each iteration");
P("doubles the resolution of the grid. This is done in 2 stages.");
P("");
P("A        B                  A           B                A     F     B");
P("               stage1                        stage2");
P("              --------->          E         -------->    G     E     H");
P("");
P("C        D                  C           D                C     I     D");
P("");
P("The new points are generated by taking an average of the surrounding points");
P("and adding a random offset.");
P("The modifications to the standard algorith are as follows:");
P("There are three optional regeneration steps to reduce \"creasing\". A");
P("regeneration step recalculates the height of existing points using an");
P("average and offset from a newer generation of points. The three");
P("regeneration steps are:");
P("  rg1:  recalculate corner points (A,B,C,D) from the midpoints (E)");
P("        after the stage1 update.");
P("  rg2:  recalculate midpoints (E) from the edge points (F,G,H,I)");
P("        after the stage2 update");
P("  rg3:  recalculate corner points (A,B,C,D) from the edge points (F,G,H,I)");
P("        after the stage2 update");
P("The regeneration stages are turned on by the smoothing parameter (-s flag)");
P("");
P("  flag    rg3   rg2   rg1");
P("  0       off   off   off");
P("  1       on    off   off");
P("  2       off   on    off");
P("  3       on    on    off");
P("  4       off   off   on");
P("  5       on    off   on");
P("  6       off   on    on");
P("  7       on    on    on");
P("");
P("When performing the regeneration steps the random offset is added to a");
P("weighted average of the previous value of the point and a the average of");
P("the new points. The weighting factors are controlled by the -X and -Y flags.");
P("");
P("The -x flag (cross update) controls whether the midpoints (E) are included");
P("in the average when performing the stage2 update or if only the corner");
P("points are used.");
P("");
}