hedgewars/uLandGenPerlin.pas
changeset 10186 3fa109a1ae95
parent 10185 007a40cfbb3d
child 10187 0d506346c1f0
equal deleted inserted replaced
10185:007a40cfbb3d 10186:3fa109a1ae95
   100 procedure GenPerlin;
   100 procedure GenPerlin;
   101 var y, x, di, dj, r: LongInt;
   101 var y, x, di, dj, r: LongInt;
   102 begin
   102 begin
   103     inoise_setup();
   103     inoise_setup();
   104 
   104 
   105     for y:= 0 to pred(height) do
   105     for y:= 1024 to pred(height) do
   106     begin
   106     begin
   107         di:= detail * field * y div height;
   107         di:= detail * field * y div height;
   108         for x:= 0 to pred(width) do
   108         for x:= 0 to pred(width) do
   109         begin
   109         begin
   110             dj:= detail * field * x div width;
   110             dj:= detail * field * x div width;
   111             r:= (abs(inoise(di, dj)) + y*4) mod 65536 div 256;
   111             r:= (abs(inoise(di, dj))) shr 8 and $ff;
   112             r:= r - max(0, abs(x - width div 2) - width * 45 div 100); // fade on edges
   112             r:= r - max(0, abs(x - width div 2) - width * 55 div 128); // fade on edges
   113             //r:= r - max(0, - abs(x - width div 2) + width * 2 div 100); // split vertically in the middle
   113             //r:= r - max(0, - abs(x - width div 2) + width * 2 div 100); // split vertically in the middle
   114 
   114 
   115 
   115 
   116             //r:= r + (trunc(1000 - sqrt(sqr(x - (width div 2)) * 4 + sqr(y - height * 5 div 4) * 22))) div 600 * 20; // ellipse
   116             //r:= r + (trunc(1000 - sqrt(sqr(x - (width div 2)) * 4 + sqr(y - height * 5 div 4) * 22))) div 600 * 20; // ellipse
   117             r:= r + (trunc(1000 - (abs(x - (width div 2)) * 2 + abs(y - height * 5 div 4) * 4))) div 600 * 20; // manhattan length ellipse
   117             r:= r + (trunc(2000 - (abs(x - (width div 2)) * 2 + abs(y - height * 5 div 4) * 4))) div 512 * 20; // manhattan length ellipse
   118 
   118 
   119             if r < 0 then Land[y, x]:= 0 else Land[y, x]:= lfBasic;
   119             if r < 0 then Land[y, x]:= 0 else Land[y, x]:= lfBasic;
   120 
   120 
   121         end;
   121         end;
   122     end;
   122     end;