changed variations
This commit is contained in:
parent
fafa848225
commit
05f68f0c1d
@ -63,6 +63,7 @@ type
|
||||
procedure Cosine; // var[20]
|
||||
procedure Rings; // var[21]
|
||||
procedure Fan; // var[22]
|
||||
|
||||
procedure Triblob; // var[23]
|
||||
procedure Daisy; // var[24]
|
||||
procedure Checkers; // var[25]
|
||||
|
@ -6,7 +6,7 @@ uses
|
||||
BaseVariation;
|
||||
|
||||
const
|
||||
NRLOCVAR = 27;
|
||||
NRLOCVAR = 23;
|
||||
|
||||
function NrVar: integer;
|
||||
function Varnames(const index: integer): String;
|
||||
@ -57,11 +57,7 @@ const
|
||||
'power',
|
||||
'cosine',
|
||||
'rings',
|
||||
'fan',
|
||||
'triblob',
|
||||
'daisy',
|
||||
'checkers',
|
||||
'crot'
|
||||
'fan'
|
||||
);
|
||||
begin
|
||||
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)));
|
||||
|
||||
FPx^ := FPx^ + vvar * r * cos(Angle);
|
||||
FPy^ := FPy^ + vvar * r * sin(Angle);
|
||||
FPx^ := FPx^ + vvar * r * sin(Angle);
|
||||
FPy^ := FPy^ + vvar * r * cos(Angle);
|
||||
end;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
Loading…
Reference in New Issue
Block a user