new variations

This commit is contained in:
ronaldhordijk 2005-04-09 06:50:57 +00:00
parent 22a79569e1
commit 7d381cf6dc

View File

@ -4,9 +4,9 @@ interface
const const
{$IFDEF TESTVARIANT} {$IFDEF TESTVARIANT}
NVARS = 26; NVARS = 27;
{$ELSE} {$ELSE}
NVARS = 25; NVARS = 26;
{$ENDIF} {$ENDIF}
varnames: array[0..NVARS -1] of PChar = ( varnames: array[0..NVARS -1] of PChar = (
@ -34,7 +34,8 @@ const
'rings', 'rings',
'fan', 'fan',
'triblob', 'triblob',
'daisy' 'daisy',
'checkers'
{$IFDEF TESTVARIANT} {$IFDEF TESTVARIANT}
,'test' ,'test'
{$ENDIF} {$ENDIF}
@ -97,6 +98,7 @@ type
procedure Fan; // var[22] procedure Fan; // var[22]
procedure Triblob; // var[23] procedure Triblob; // var[23]
procedure Daisy; // var[24] procedure Daisy; // var[24]
procedure Checkers; // var[25]
procedure TestVar; // var[NVARS - 1] procedure TestVar; // var[NVARS - 1]
function Mul33(const M1, M2: TMatrix): TMatrix; function Mul33(const M1, M2: TMatrix): TMatrix;
@ -298,6 +300,11 @@ begin
Inc(FNrFunctions); Inc(FNrFunctions);
end; end;
if (vars[25] <> 0.0) then begin
FFunctionList[FNrFunctions] := Checkers;
Inc(FNrFunctions);
end;
{$IFDEF TESTVARIANT} {$IFDEF TESTVARIANT}
if (vars[NVARS -1] <> 0.0) then begin if (vars[NVARS -1] <> 0.0) then begin
FFunctionList[FNrFunctions] := TestVar; FFunctionList[FNrFunctions] := TestVar;
@ -633,17 +640,31 @@ begin
Angle := 0.0; Angle := 0.0;
// r := r * (0.6 + 0.4 * sin(3 * Angle)); // r := r * (0.6 + 0.4 * sin(3 * Angle));
r := r * sin(5 * Angle); r := r * ( 1 - Sqr(sin(5 * Angle)));
FPx := FPx + vars[24] * r * cos(Angle); FPx := FPx + vars[24] * r * cos(Angle);
FPy := FPy + vars[24] * r * sin(Angle); FPy := FPy + vars[24] * r * sin(Angle);
end; end;
///////////////////////////////////////////////////////////////////////////////
procedure TXForm.Checkers;
var
dx: double;
begin
if odd(Round(FTX * 5) + Round(FTY * 5)) then
dx := 0.2
else
dx := 0;
FPx := FPx + vars[25] * FTx + dx;
FPy := FPy + vars[25] * FTy;
end;
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
procedure TXForm.TestVar; procedure TXForm.TestVar;
var var
r : double; r : double;
// dx, dy, dx2: double; dx, dy, dx2: double;
Angle: double; Angle: double;
begin begin
r := sqrt(FTx * FTx + FTy * FTy); r := sqrt(FTx * FTx + FTy * FTy);
@ -652,11 +673,10 @@ begin
else else
Angle := 0.0; Angle := 0.0;
// r := r * (0.6 + 0.4 * sin(3 * Angle)); r:= R - 0.04 * sin(6.2 * R - 1) - 0.008 * R;
r := r * sin(5 * Angle);
FPx := FPx + vars[NVARS-1] * r * cos(Angle); FPx := FPx + vars[NVars - 1] * r * cos(Angle);
FPy := FPy + vars[NVARS-1] * r * sin(Angle); FPy := FPy + vars[NVars - 1] * r * sin(Angle);
end; end;
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////