changed variations
This commit is contained in:
parent
fafa848225
commit
05f68f0c1d
@ -63,6 +63,7 @@ type
|
|||||||
procedure Cosine; // var[20]
|
procedure Cosine; // var[20]
|
||||||
procedure Rings; // var[21]
|
procedure Rings; // var[21]
|
||||||
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 Checkers; // var[25]
|
||||||
|
@ -6,7 +6,7 @@ uses
|
|||||||
BaseVariation;
|
BaseVariation;
|
||||||
|
|
||||||
const
|
const
|
||||||
NRLOCVAR = 27;
|
NRLOCVAR = 23;
|
||||||
|
|
||||||
function NrVar: integer;
|
function NrVar: integer;
|
||||||
function Varnames(const index: integer): String;
|
function Varnames(const index: integer): String;
|
||||||
@ -57,11 +57,7 @@ const
|
|||||||
'power',
|
'power',
|
||||||
'cosine',
|
'cosine',
|
||||||
'rings',
|
'rings',
|
||||||
'fan',
|
'fan'
|
||||||
'triblob',
|
|
||||||
'daisy',
|
|
||||||
'checkers',
|
|
||||||
'crot'
|
|
||||||
);
|
);
|
||||||
begin
|
begin
|
||||||
if Index < NRLOCVAR then
|
if Index < NRLOCVAR then
|
||||||
|
129
2.10/Source/varFan2.pas
Normal file
129
2.10/Source/varFan2.pas
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
unit varFan2;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
BaseVariation, XFormMan;
|
||||||
|
|
||||||
|
type
|
||||||
|
TVariationFan2 = class(TBaseVariation)
|
||||||
|
private
|
||||||
|
FX,FY: double;
|
||||||
|
public
|
||||||
|
constructor Create;
|
||||||
|
|
||||||
|
class function GetName: string; override;
|
||||||
|
class function GetInstance: TBaseVariation; override;
|
||||||
|
|
||||||
|
class function GetNrVariables: integer; override;
|
||||||
|
class function GetVariableNameAt(const Index: integer): string; override;
|
||||||
|
|
||||||
|
function SetVariable(const Name: string; var value: double): boolean; override;
|
||||||
|
function GetVariable(const Name: string; var value: double): boolean; override;
|
||||||
|
|
||||||
|
|
||||||
|
procedure CalcFunction; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
Math;
|
||||||
|
|
||||||
|
{ TVariationTest }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure TVariationFan2.CalcFunction;
|
||||||
|
const
|
||||||
|
EPS = 1E-10;
|
||||||
|
var
|
||||||
|
r,t,a : double;
|
||||||
|
dx, dy, dx2: double;
|
||||||
|
Angle: double;
|
||||||
|
begin
|
||||||
|
r := sqrt(FTx^ * FTx^ + FTy^ * FTy^);
|
||||||
|
if (FTx^ < -EPS) or (FTx^ > EPS) or (FTy^ < -EPS) or (FTy^ > EPS) then
|
||||||
|
Angle := arctan2(FTx^, FTy^)
|
||||||
|
else
|
||||||
|
Angle := 0.0;
|
||||||
|
|
||||||
|
dy := FY;
|
||||||
|
dx := PI * (sqr(FX) + EPS);
|
||||||
|
dx2 := dx/2;
|
||||||
|
|
||||||
|
t := Angle+dy - System.Int((Angle + dy)/dx) * dx;
|
||||||
|
if (t > dx2) then
|
||||||
|
a := Angle - dx2
|
||||||
|
else
|
||||||
|
a := Angle + dx2;
|
||||||
|
|
||||||
|
FPx^ := FPx^ + vvar * r * sin(Angle);
|
||||||
|
FPy^ := FPy^ + vvar * r * cos(Angle);
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
constructor TVariationFan2.Create;
|
||||||
|
begin
|
||||||
|
FX := 2 * Random - 1;
|
||||||
|
FY := 2 * Random - 1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class function TVariationFan2.GetInstance: TBaseVariation;
|
||||||
|
begin
|
||||||
|
Result := TVariationFan2.Create;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class function TVariationFan2.GetName: string;
|
||||||
|
begin
|
||||||
|
Result := 'fan2';
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class function TVariationFan2.GetVariableNameAt(const Index: integer): string;
|
||||||
|
begin
|
||||||
|
case Index Of
|
||||||
|
0: Result := 'fan2_x';
|
||||||
|
1: Result := 'fan2_y';
|
||||||
|
else
|
||||||
|
Result := '';
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function TVariationFan2.SetVariable(const Name: string; var value: double): boolean;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
if Name = 'fan2_x' then begin
|
||||||
|
FX := Value;
|
||||||
|
Result := True;
|
||||||
|
end else if Name = 'fan2_y' then begin
|
||||||
|
FY := Value;
|
||||||
|
Result := True;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class function TVariationFan2.GetNrVariables: integer;
|
||||||
|
begin
|
||||||
|
Result := 2
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function TVariationFan2.GetVariable(const Name: string; var value: double): boolean;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
if Name = 'fan2_x' then begin
|
||||||
|
Value := FX;
|
||||||
|
Result := True;
|
||||||
|
end else if Name = 'fan2_y' then begin
|
||||||
|
Value := FY;
|
||||||
|
Result := True;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
initialization
|
||||||
|
RegisterVariation(TVariationFan2);
|
||||||
|
end.
|
116
2.10/Source/varRings2.pas
Normal file
116
2.10/Source/varRings2.pas
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
unit varRings2;
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
BaseVariation, XFormMan;
|
||||||
|
|
||||||
|
type
|
||||||
|
TVariationRings2 = class(TBaseVariation)
|
||||||
|
private
|
||||||
|
FVal: double;
|
||||||
|
public
|
||||||
|
constructor Create;
|
||||||
|
|
||||||
|
class function GetName: string; override;
|
||||||
|
class function GetInstance: TBaseVariation; override;
|
||||||
|
|
||||||
|
class function GetNrVariables: integer; override;
|
||||||
|
class function GetVariableNameAt(const Index: integer): string; override;
|
||||||
|
|
||||||
|
function SetVariable(const Name: string; var value: double): boolean; override;
|
||||||
|
function GetVariable(const Name: string; var value: double): boolean; override;
|
||||||
|
|
||||||
|
|
||||||
|
procedure CalcFunction; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
Math;
|
||||||
|
|
||||||
|
const
|
||||||
|
EPS = 1E-10;
|
||||||
|
|
||||||
|
|
||||||
|
{ TVariationTest }
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
procedure TVariationRings2.CalcFunction;
|
||||||
|
var
|
||||||
|
dx,r: double;
|
||||||
|
Length: double;
|
||||||
|
Angle: double;
|
||||||
|
begin
|
||||||
|
Length := sqrt(FTx^ * FTx^ + FTy^ * FTy^);
|
||||||
|
if (FTx^ < -EPS) or (FTx^ > EPS) or (FTy^ < -EPS) or (FTy^ > EPS) then
|
||||||
|
Angle := arctan2(FTx^, FTy^)
|
||||||
|
else
|
||||||
|
Angle := 0.0;
|
||||||
|
|
||||||
|
dx := sqr(FVal) + EPS;
|
||||||
|
r := Length + dx - System.Int((Length + dx)/(2 * dx)) * 2 * dx - dx + Length * (1-dx);
|
||||||
|
|
||||||
|
FPx^ := FPx^ + vvar * r * sin(Angle);
|
||||||
|
FPy^ := FPy^ + vvar * r * cos(Angle);
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
constructor TVariationRings2.Create;
|
||||||
|
begin
|
||||||
|
FVal := Random * 2;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class function TVariationRings2.GetInstance: TBaseVariation;
|
||||||
|
begin
|
||||||
|
Result := TVariationRings2.Create;
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class function TVariationRings2.GetName: string;
|
||||||
|
begin
|
||||||
|
Result := 'rings2';
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class function TVariationRings2.GetVariableNameAt(const Index: integer): string;
|
||||||
|
begin
|
||||||
|
case Index Of
|
||||||
|
0: Result := 'rings2_val';
|
||||||
|
else
|
||||||
|
Result := '';
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function TVariationRings2.SetVariable(const Name: string; var value: double): boolean;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
if Name = 'rings2_val' then begin
|
||||||
|
FVal := Value;
|
||||||
|
Result := True;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
class function TVariationRings2.GetNrVariables: integer;
|
||||||
|
begin
|
||||||
|
Result := 1
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
function TVariationRings2.GetVariable(const Name: string; var value: double): boolean;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
if Name = 'rings2_val' then begin
|
||||||
|
Value := FVal;
|
||||||
|
Result := True;
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
initialization
|
||||||
|
RegisterVariation(TVariationRings2);
|
||||||
|
end.
|
@ -49,8 +49,8 @@ begin
|
|||||||
|
|
||||||
r := r * (FLow + (FHigh - FLow) * (0.5 + 0.5 * sin(FWaves * Angle)));
|
r := r * (FLow + (FHigh - FLow) * (0.5 + 0.5 * sin(FWaves * Angle)));
|
||||||
|
|
||||||
FPx^ := FPx^ + vvar * r * cos(Angle);
|
FPx^ := FPx^ + vvar * r * sin(Angle);
|
||||||
FPy^ := FPy^ + vvar * r * sin(Angle);
|
FPy^ := FPy^ + vvar * r * cos(Angle);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user