Returned changes for 'Fix Randomize gradient floating point error'

because of unexpected side effect.
Worked around the problem another way
This commit is contained in:
ronaldhordijk 2005-06-28 16:37:55 +00:00
parent 44b1608ce0
commit 1a98ff484b
2 changed files with 15 additions and 10 deletions

View File

@ -65,14 +65,18 @@ var
hsv: array[0..2] of double; hsv: array[0..2] of double;
pal: TColorMap; pal: TColorMap;
begin begin
rgb[0] := 0;
rgb[1] := 0;
rgb[2] := 0;
inc(MainSeed); inc(MainSeed);
RandSeed := Mainseed; RandSeed := Mainseed;
nodes := random((MaxNodes - 1) - (MinNodes - 2)) + (MinNodes - 1); nodes := random((MaxNodes - 1) - (MinNodes - 2)) + (MinNodes - 1);
n := 256 div nodes; n := 256 div nodes;
b := 0; b := 0;
hsv[0] := (random(MaxHue - (MinHue - 1)) + MinHue) / 100; hsv[0] := 0.01 * (random(MaxHue - (MinHue - 1)) + MinHue);
hsv[1] := (random(MaxSat - (MinSat - 1)) + MinSat) / 100; hsv[1] := 0.01 * (random(MaxSat - (MinSat - 1)) + MinSat);
hsv[2] := (random(MaxLum - (MinLum - 1)) + MinLum) / 100; hsv[2] := 0.01 * (random(MaxLum - (MinLum - 1)) + MinLum);
hsv2rgb(hsv, rgb); hsv2rgb(hsv, rgb);
Pal[0][0] := Round(rgb[0] * 255); Pal[0][0] := Round(rgb[0] * 255);
Pal[0][1] := Round(rgb[1] * 255); Pal[0][1] := Round(rgb[1] * 255);
@ -80,9 +84,9 @@ begin
repeat repeat
a := b; a := b;
b := b + n; b := b + n;
hsv[0] := (random(MaxHue - (MinHue - 1)) + MinHue) / 100; hsv[0] := 0.01 * (random(MaxHue - (MinHue - 1)) + MinHue);
hsv[1] := (random(MaxSat - (MinSat - 1)) + MinSat) / 100; hsv[1] := 0.01 * (random(MaxSat - (MinSat - 1)) + MinSat);
hsv[2] := (random(MaxLum - (MinLum - 1)) + MinLum) / 100; hsv[2] := 0.01 * (random(MaxLum - (MinLum - 1)) + MinLum);
hsv2rgb(hsv, rgb); hsv2rgb(hsv, rgb);
if b > 255 then b := 255; if b > 255 then b := 255;
Pal[b][0] := Round(rgb[0] * 255); Pal[b][0] := Round(rgb[0] * 255);

View File

@ -83,11 +83,12 @@ var
f, p, q, t, v: double; f, p, q, t, v: double;
begin begin
try try
rgb[0] := 0; // rgb[0] := 0;
rgb[1] := 0; // rgb[1] := 0;
rgb[2] := 0; // rgb[2] := 0;
j := floor(hsv[0]); j := floor(hsv[0]);
f := hsv[0] - j; f := hsv[0] - j;
v := hsv[2]; v := hsv[2];
p := hsv[2] * (1 - hsv[1]); p := hsv[2] * (1 - hsv[1]);