fixed rings and fan - they were swapped :)
This commit is contained in:
parent
3675a21bf6
commit
f95eef2378
@ -78,7 +78,7 @@ type
|
|||||||
public
|
public
|
||||||
vars: array of double; // normalized interp coefs between variations
|
vars: array of double; // normalized interp coefs between variations
|
||||||
c: array[0..2, 0..1] of double; // the coefs to the affine part of the function
|
c: array[0..2, 0..1] of double; // the coefs to the affine part of the function
|
||||||
p: array[0..2, 0..1] of double; // the coefs to the affine part of the function
|
// p: array[0..2, 0..1] of double; // the coefs to the affine part of the function
|
||||||
density: double; // prob is this function is chosen. 0 - 1
|
density: double; // prob is this function is chosen. 0 - 1
|
||||||
color: double; // color coord for this function. 0 - 1
|
color: double; // color coord for this function. 0 - 1
|
||||||
color2: double; // Second color coord for this function. 0 - 1
|
color2: double; // Second color coord for this function. 0 - 1
|
||||||
@ -221,9 +221,7 @@ begin
|
|||||||
CalculateAngle := (vars[5] <> 0.0) or (vars[6] <> 0.0) or (vars[7] <> 0.0) or (vars[8] <> 0.0) or
|
CalculateAngle := (vars[5] <> 0.0) or (vars[6] <> 0.0) or (vars[7] <> 0.0) or (vars[8] <> 0.0) or
|
||||||
(vars[12] <> 0.0) or (vars[13] <> 0.0) or (vars[21] <> 0.0) or (vars[22] <> 0.0);
|
(vars[12] <> 0.0) or (vars[13] <> 0.0) or (vars[21] <> 0.0) or (vars[22] <> 0.0);
|
||||||
// CalculateLength := False;
|
// CalculateLength := False;
|
||||||
CalculateSinCos := {z! (vars[4] <> 0.0) or} (vars[9] <> 0.0) or
|
CalculateSinCos := (vars[9] <> 0.0) or (vars[11] <> 0.0) or (vars[19] <> 0.0) or (vars[21] <> 0.0);
|
||||||
(vars[11] <> 0.0) or (vars[19] <> 0.0) or
|
|
||||||
(vars[21] <> 0.0);
|
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -287,7 +285,7 @@ procedure TXForm.Horseshoe;
|
|||||||
var
|
var
|
||||||
r: double;
|
r: double;
|
||||||
begin
|
begin
|
||||||
r := vars[4] / sqrt(FTx * FTx + FTy * FTy);
|
r := vars[4] / sqrt(sqr(FTx) + sqr(FTy));
|
||||||
FPx := FPx + (FTx - FTy) * (FTx + FTy) * r;
|
FPx := FPx + (FTx - FTy) * (FTx + FTy) * r;
|
||||||
FPy := FPy + (2*FTx*FTy) * r;
|
FPy := FPy + (2*FTx*FTy) * r;
|
||||||
end;
|
end;
|
||||||
@ -304,8 +302,8 @@ begin
|
|||||||
FPy := FPy + vars[5] * ny;
|
FPy := FPy + vars[5] * ny;
|
||||||
}
|
}
|
||||||
begin
|
begin
|
||||||
FPx := FPx + vars[5] * FAngle * 0.31830989;
|
FPx := FPx + vars[5] * FAngle / PI;
|
||||||
FPy := FPy + vars[5] * (sqrt(FTx * FTx + FTy * FTy) - 1.0);
|
FPy := FPy + vars[5] * (sqrt(sqr(FTx) + sqr(FTy)) - 1.0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--6--////////////////////////////////////////////////////////////////////////
|
//--6--////////////////////////////////////////////////////////////////////////
|
||||||
@ -313,7 +311,7 @@ procedure TXForm.FoldedHandkerchief;
|
|||||||
var
|
var
|
||||||
r: double;
|
r: double;
|
||||||
begin
|
begin
|
||||||
r := vars[6] * sqrt(FTx * FTx + FTy * FTy);
|
r := vars[6] * sqrt(sqr(FTx) + sqr(FTy));
|
||||||
FPx := FPx + sin(FAngle + r) * r;
|
FPx := FPx + sin(FAngle + r) * r;
|
||||||
FPy := FPy + cos(FAngle - r) * r;
|
FPy := FPy + cos(FAngle - r) * r;
|
||||||
end;
|
end;
|
||||||
@ -323,7 +321,7 @@ procedure TXForm.Heart;
|
|||||||
var
|
var
|
||||||
r: double;
|
r: double;
|
||||||
begin
|
begin
|
||||||
r := vars[7] * sqrt(FTx * FTx + FTy * FTy);
|
r := vars[7] * sqrt(sqr(FTx) + sqr(FTy));
|
||||||
|
|
||||||
FPx := FPx + sin(FAngle * r) * r;
|
FPx := FPx + sin(FAngle * r) * r;
|
||||||
FPy := FPy - cos(FAngle * r) * r;
|
FPy := FPy - cos(FAngle * r) * r;
|
||||||
@ -331,20 +329,18 @@ end;
|
|||||||
|
|
||||||
//--8--////////////////////////////////////////////////////////////////////////
|
//--8--////////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Disc;
|
procedure TXForm.Disc;
|
||||||
const
|
|
||||||
rPI: double = 0.31830989;
|
|
||||||
var
|
var
|
||||||
nx, ny, r: double;
|
// nx, ny: double;
|
||||||
sinr, cosr: double;
|
r, sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
nx := FTx * PI;
|
// --Z-- ????? - calculating PI^2 to get square root from it, hmm?
|
||||||
ny := FTy * PI;
|
// nx := FTx * PI;
|
||||||
|
// ny := FTy * PI;
|
||||||
|
// r := sqrt(nx * nx + ny * ny);
|
||||||
|
|
||||||
|
SinCos(PI * sqrt(sqr(FTx) + sqr(FTy)), sinr, cosr);
|
||||||
|
r := vars[8] * FAngle / PI;
|
||||||
|
|
||||||
r := sqrt(nx * nx + ny * ny);
|
|
||||||
SinCos(r, sinr, cosr);
|
|
||||||
// FPx := FPx + vars[8] * sinr * FAngle * rPI;
|
|
||||||
// FPy := FPy + vars[8] * cosr * FAngle * rPI;
|
|
||||||
r := vars[8] * FAngle * rPI;
|
|
||||||
FPx := FPx + sinr * r;
|
FPx := FPx + sinr * r;
|
||||||
FPy := FPy + cosr * r;
|
FPy := FPy + cosr * r;
|
||||||
end;
|
end;
|
||||||
@ -352,15 +348,14 @@ end;
|
|||||||
//--9--////////////////////////////////////////////////////////////////////////
|
//--9--////////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Spiral;
|
procedure TXForm.Spiral;
|
||||||
var
|
var
|
||||||
r, rr: double;
|
r, sinr, cosr: double;
|
||||||
sinr, cosr: double;
|
|
||||||
begin
|
begin
|
||||||
// r := sqrt(FTx * FTx + FTy * FTy) + 1E-6;
|
// r := sqrt(FTx * FTx + FTy * FTy) + 1E-6;
|
||||||
r := Flength + 1E-6;
|
r := Flength + 1E-6;
|
||||||
rr := vars[9] / r;
|
|
||||||
SinCos(r, sinr, cosr);
|
SinCos(r, sinr, cosr);
|
||||||
FPx := FPx + (FCosA + sinr) * rr;
|
r := vars[9] / r;
|
||||||
FPy := FPy + (FsinA - cosr) * rr;
|
FPx := FPx + (FCosA + sinr) * r;
|
||||||
|
FPy := FPy + (FsinA - cosr) * r;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--10--///////////////////////////////////////////////////////////////////////
|
//--10--///////////////////////////////////////////////////////////////////////
|
||||||
@ -403,13 +398,14 @@ var
|
|||||||
r: double;
|
r: double;
|
||||||
n0, n1, m0, m1: double;
|
n0, n1, m0, m1: double;
|
||||||
begin
|
begin
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
r := sqrt(sqr(FTx) + sqr(FTy));
|
||||||
n0 := sin(FAngle + r);
|
n0 := sin(FAngle + r);
|
||||||
n1 := cos(FAngle - r);
|
n1 := cos(FAngle - r);
|
||||||
m0 := n0 * n0 * n0 * r;
|
m0 := sqr(n0) * n0;
|
||||||
m1 := n1 * n1 * n1 * r;
|
m1 := sqr(n1) * n1;
|
||||||
FPx := FPx + vars[12] * (m0 + m1);
|
r := r * vars[12];
|
||||||
FPy := FPy + vars[12] * (m0 - m1);
|
FPx := FPx + r * (m0 + m1);
|
||||||
|
FPy := FPy + r * (m0 - m1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--13--///////////////////////////////////////////////////////////////////////
|
//--13--///////////////////////////////////////////////////////////////////////
|
||||||
@ -418,9 +414,13 @@ var
|
|||||||
a,r: double;
|
a,r: double;
|
||||||
sinr, cosr: double;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
a := FAngle*0.5 + Trunc(random * 2) * PI;
|
//a := FAngle*0.5 + Trunc(random * 2) * PI;
|
||||||
|
if random > 0.5 then
|
||||||
|
a := FAngle/2 + PI
|
||||||
|
else
|
||||||
|
a := FAngle/2;
|
||||||
SinCos(a, sinr, cosr);
|
SinCos(a, sinr, cosr);
|
||||||
r := vars[13] * sqrt(sqrt(FTx * FTx + FTy * FTy)); //Math.power(FTx * FTx + FTy * FTy, 0.25);
|
r := vars[13] * sqrt(sqrt(sqr(FTx) + sqr(FTy))); //Math.power(FTx * FTx + FTy * FTy, 0.25);
|
||||||
FPx := FPx + r * cosr;
|
FPx := FPx + r * cosr;
|
||||||
FPy := FPy + r * sinr;
|
FPy := FPy + r * sinr;
|
||||||
end;
|
end;
|
||||||
@ -472,7 +472,7 @@ begin
|
|||||||
FPy := FPy + vars[16] * r * FSinA;
|
FPy := FPy + vars[16] * r * FSinA;
|
||||||
}
|
}
|
||||||
// --Z-- and again, sin & cos are NOT necessary here:
|
// --Z-- and again, sin & cos are NOT necessary here:
|
||||||
r := 2 * vars[16] / (sqrt(FTx * FTx + FTy * FTy) + 1);
|
r := 2 * vars[16] / (sqrt(sqr(FTx) + sqr(FTy)) + 1);
|
||||||
// by the way, now we can clearly see that the original author messed X and Y:
|
// by the way, now we can clearly see that the original author messed X and Y:
|
||||||
FPx := FPx + r * FTy;
|
FPx := FPx + r * FTy;
|
||||||
FPy := FPy + r * FTx;
|
FPy := FPy + r * FTx;
|
||||||
@ -556,9 +556,11 @@ begin
|
|||||||
// SinCos(FAngle, sinr, cosr);
|
// SinCos(FAngle, sinr, cosr);
|
||||||
// FPx := FPx + vars[21] * r * cosr;
|
// FPx := FPx + vars[21] * r * cosr;
|
||||||
// FPy := FPy + vars[21] * r * sinr;
|
// FPy := FPy + vars[21] * r * sinr;
|
||||||
|
r := sqrt(sqr(ftx) + sqr(fty));
|
||||||
r := vars[21] * (
|
r := vars[21] * (
|
||||||
2 * FLength + dx * (System.Int(FLength/(2 * dx) + 0.5) * 2 - FLength)
|
2 * r + dx * (System.Int(r/(2 * dx) + 0.5) * 2 - r)
|
||||||
);
|
);
|
||||||
|
|
||||||
FPx := FPx + r * FCosA;
|
FPx := FPx + r * FCosA;
|
||||||
FPy := FPy + r * FSinA;
|
FPy := FPy + r * FSinA;
|
||||||
end;
|
end;
|
||||||
@ -574,7 +576,7 @@ begin
|
|||||||
dx := PI * (sqr(c20) + EPS);
|
dx := PI * (sqr(c20) + EPS);
|
||||||
dx2 := dx/2;
|
dx2 := dx/2;
|
||||||
|
|
||||||
r := vars[22] * sqrt(FTx * FTx + FTy * FTy);
|
r := vars[22] * sqrt(sqr(FTx) + sqr(FTy));
|
||||||
|
|
||||||
t := FAngle+dy - System.Int((FAngle + dy)/dx) * dx;
|
t := FAngle+dy - System.Int((FAngle + dy)/dx) * dx;
|
||||||
if (t > dx2) then
|
if (t > dx2) then
|
||||||
@ -595,7 +597,7 @@ var
|
|||||||
Angle: double;
|
Angle: double;
|
||||||
sinr, cosr: double;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
r := sqrt(sqr(FTx) + sqr(FTy));
|
||||||
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
||||||
Angle := arctan2(FTx, FTy)
|
Angle := arctan2(FTx, FTy)
|
||||||
else
|
else
|
||||||
@ -615,7 +617,7 @@ var
|
|||||||
Angle: double;
|
Angle: double;
|
||||||
sinr, cosr: double;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
r := sqrt(sqr(FTx) + sqr(FTy));
|
||||||
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
||||||
Angle := arctan2(FTx, FTy)
|
Angle := arctan2(FTx, FTy)
|
||||||
else
|
else
|
||||||
@ -650,7 +652,7 @@ var
|
|||||||
Angle: double;
|
Angle: double;
|
||||||
sinr, cosr: double;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
r := sqrt(sqr(FTx) + sqr(FTy));
|
||||||
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
if (FTx < -EPS) or (FTx > EPS) or (FTy < -EPS) or (FTy > EPS) then
|
||||||
Angle := arctan2(FTx, FTy)
|
Angle := arctan2(FTx, FTy)
|
||||||
else
|
else
|
||||||
@ -686,7 +688,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
if CalculateSinCos then begin
|
if CalculateSinCos then begin
|
||||||
Flength := sqrt(FTx * FTx + FTy * FTy);
|
Flength := sqrt(sqr(FTx) + sqr(FTy));
|
||||||
if FLength = 0 then begin
|
if FLength = 0 then begin
|
||||||
FSinA := 0;
|
FSinA := 0;
|
||||||
FCosA := 0;
|
FCosA := 0;
|
||||||
@ -732,7 +734,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
if CalculateSinCos then begin
|
if CalculateSinCos then begin
|
||||||
Flength := sqrt(FTx * FTx + FTy * FTy);
|
Flength := sqrt(sqr(FTx) + sqr(FTy));
|
||||||
if FLength = 0 then begin
|
if FLength = 0 then begin
|
||||||
FSinA := 0;
|
FSinA := 0;
|
||||||
FCosA := 1;
|
FCosA := 1;
|
||||||
@ -795,7 +797,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
if CalculateSinCos then begin
|
if CalculateSinCos then begin
|
||||||
Flength := sqrt(FTx * FTx + FTy * FTy);
|
Flength := sqrt(sqr(FTx) + sqr(FTy));
|
||||||
if FLength = 0 then begin
|
if FLength = 0 then begin
|
||||||
FSinA := 0;
|
FSinA := 0;
|
||||||
FCosA := 1;
|
FCosA := 1;
|
||||||
@ -852,7 +854,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
if CalculateSinCos then begin
|
if CalculateSinCos then begin
|
||||||
Flength := sqrt(FTx * FTx + FTy * FTy);
|
Flength := sqrt(sqr(FTx) + sqr(FTy));
|
||||||
if FLength = 0 then begin
|
if FLength = 0 then begin
|
||||||
FSinA := 0;
|
FSinA := 0;
|
||||||
FCosA := 1;
|
FCosA := 1;
|
||||||
@ -894,7 +896,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
if CalculateSinCos then begin
|
if CalculateSinCos then begin
|
||||||
Flength := sqrt(FTx * FTx + FTy * FTy);
|
Flength := sqrt(sqr(FTx) + sqr(FTy));
|
||||||
if FLength = 0 then begin
|
if FLength = 0 then begin
|
||||||
FSinA := 0;
|
FSinA := 0;
|
||||||
FCosA := 0;
|
FCosA := 0;
|
||||||
@ -1090,8 +1092,8 @@ begin
|
|||||||
FFunctionList[18] := Exponential;
|
FFunctionList[18] := Exponential;
|
||||||
FFunctionList[19] := Power;
|
FFunctionList[19] := Power;
|
||||||
FFunctionList[20] := Cosine;
|
FFunctionList[20] := Cosine;
|
||||||
FFunctionList[21] := Fan;
|
FFunctionList[21] := Rings;
|
||||||
FFunctionList[22] := Rings;
|
FFunctionList[22] := Fan;
|
||||||
|
|
||||||
// FFunctionList[23] := Triblob;
|
// FFunctionList[23] := Triblob;
|
||||||
// FFunctionList[24] := Daisy;
|
// FFunctionList[24] := Daisy;
|
||||||
|
Loading…
Reference in New Issue
Block a user