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; |