increased precision in xml output; optimized some things
This commit is contained in:
parent
2bfc76e9b0
commit
83b1e24982
@ -1440,9 +1440,9 @@ begin
|
|||||||
sl.add(format('time %f', [time]));
|
sl.add(format('time %f', [time]));
|
||||||
if cmapindex >= 0 then
|
if cmapindex >= 0 then
|
||||||
sl.add(format('cmap %d', [cmapindex]));
|
sl.add(format('cmap %d', [cmapindex]));
|
||||||
sl.add(format('zoom %.3f', [zoom])); // mt
|
sl.add(format('zoom %g', [zoom])); // mt
|
||||||
sl.add(format('angle %.3f', [FAngle]));
|
sl.add(format('angle %g', [FAngle]));
|
||||||
sl.add(format('image_size %d %d center %.3f %.3f pixels_per_unit %f',
|
sl.add(format('image_size %d %d center %g %g pixels_per_unit %f',
|
||||||
[Width, Height, center[0], center[1], pixels_per_unit]));
|
[Width, Height, center[0], center[1], pixels_per_unit]));
|
||||||
sl.add(format('spatial_oversample %d spatial_filter_radius %f',
|
sl.add(format('spatial_oversample %d spatial_filter_radius %f',
|
||||||
[spatial_oversample, spatial_filter_radius]));
|
[spatial_oversample, spatial_filter_radius]));
|
||||||
@ -1457,10 +1457,10 @@ begin
|
|||||||
if xform[i].density = 0 then
|
if xform[i].density = 0 then
|
||||||
Continue;
|
Continue;
|
||||||
|
|
||||||
sl.add(format('xform %d density %.3f color %.3f symmetry %f', [i, xform[i].density, xform[i].color, xform[i].symmetry]));
|
sl.add(format('xform %d density %g color %g symmetry %g', [i, xform[i].density, xform[i].color, xform[i].symmetry]));
|
||||||
s := 'var';
|
s := 'var';
|
||||||
for j := 0 to NRVAR - 1 do begin
|
for j := 0 to NRVAR - 1 do begin
|
||||||
s := format('%s %.3f', [s, xform[i].vars[j]]);
|
s := format('%s %g', [s, xform[i].vars[j]]);
|
||||||
end;
|
end;
|
||||||
sl.add(s);
|
sl.add(s);
|
||||||
// sl.Add(format('coefs %f %f %f %f %f %f',
|
// sl.Add(format('coefs %f %f %f %f %f %f',
|
||||||
|
@ -121,6 +121,15 @@ uses
|
|||||||
const
|
const
|
||||||
EPS = 1E-10;
|
EPS = 1E-10;
|
||||||
|
|
||||||
|
procedure SinCos(const Theta: double; var Sin, Cos: double); // I'm not sure, but maybe it'll help...
|
||||||
|
asm
|
||||||
|
FLD Theta
|
||||||
|
FSINCOS
|
||||||
|
FSTP qword ptr [edx] // Cos
|
||||||
|
FSTP qword ptr [eax] // Sin
|
||||||
|
FWAIT
|
||||||
|
end;
|
||||||
|
|
||||||
{ TXForm }
|
{ TXForm }
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
@ -212,8 +221,8 @@ 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 := (vars[4] <> 0.0) or (vars[9] <> 0.0) or {z! (vars[10] <> 0.0) or}
|
CalculateSinCos := {z! (vars[4] <> 0.0) or} (vars[9] <> 0.0) or
|
||||||
(vars[11] <> 0.0) or {z! (vars[16] <> 0.0) or} (vars[19] <> 0.0) or
|
(vars[11] <> 0.0) or (vars[19] <> 0.0) or
|
||||||
(vars[21] <> 0.0);
|
(vars[21] <> 0.0);
|
||||||
|
|
||||||
end;
|
end;
|
||||||
@ -235,39 +244,52 @@ end;
|
|||||||
//--2--////////////////////////////////////////////////////////////////////////
|
//--2--////////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Spherical;
|
procedure TXForm.Spherical;
|
||||||
var
|
var
|
||||||
r2, rr2: double;
|
r: double;
|
||||||
begin
|
begin
|
||||||
r2 := FTx * FTx + FTy * FTy + 1E-6;
|
r := vars[2] / (FTx * FTx + FTy * FTy + 1E-6);
|
||||||
rr2 := 1 / r2;
|
FPx := FPx + FTx * r;
|
||||||
FPx := FPx + vars[2] * (FTx * rr2);
|
FPy := FPy + FTy * r;
|
||||||
FPy := FPy + vars[2] * (FTy * rr2);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--3--////////////////////////////////////////////////////////////////////////
|
//--3--////////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Swirl;
|
procedure TXForm.Swirl;
|
||||||
var
|
var
|
||||||
c1, c2, r2: double;
|
rsin, rcos: double;
|
||||||
begin
|
begin
|
||||||
|
{
|
||||||
r2 := FTx * FTx + FTy * FTy;
|
r2 := FTx * FTx + FTy * FTy;
|
||||||
c1 := sin(r2);
|
c1 := sin(r2);
|
||||||
c2 := cos(r2);
|
c2 := cos(r2);
|
||||||
FPx := FPx + vars[3] * (c1 * FTx - c2 * FTy);
|
FPx := FPx + vars[3] * (c1 * FTx - c2 * FTy);
|
||||||
FPy := FPy + vars[3] * (c2 * FTx + c1 * FTy);
|
FPy := FPy + vars[3] * (c2 * FTx + c1 * FTy);
|
||||||
|
}
|
||||||
|
SinCos(FTx * FTx + FTy * FTy, rsin, rcos);
|
||||||
|
FPx := FPx + vars[3] * (rsin * FTx - rcos * FTy);
|
||||||
|
FPy := FPy + vars[3] * (rcos * FTx + rsin * FTy);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--4--////////////////////////////////////////////////////////////////////////
|
//--4--////////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Horseshoe;
|
procedure TXForm.Horseshoe;
|
||||||
//var
|
//var
|
||||||
// a, c1, c2: double;
|
// a, c1, c2: double;
|
||||||
begin
|
//begin
|
||||||
// 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
|
||||||
// a := arctan2(FTx, FTy)
|
// a := arctan2(FTx, FTy)
|
||||||
// else
|
// else
|
||||||
// a := 0.0;
|
// a := 0.0;
|
||||||
// c1 := sin(FAngle);
|
// c1 := sin(FAngle);
|
||||||
// c2 := cos(FAngle);
|
// c2 := cos(FAngle);
|
||||||
FPx := FPx + vars[4] * (FSinA * FTx - FCosA * FTy);
|
|
||||||
FPy := FPy + vars[4] * (FCosA* FTx + FSinA * FTy);
|
// --Z-- he he he...
|
||||||
|
// FTx/FLength FTy/FLength
|
||||||
|
// FPx := FPx + vars[4] * (FSinA * FTx - FCosA * FTy);
|
||||||
|
// FPy := FPy + vars[4] * (FCosA* FTx + FSinA * FTy);
|
||||||
|
var
|
||||||
|
r: double;
|
||||||
|
begin
|
||||||
|
r := vars[4] / sqrt(FTx * FTx + FTy * FTy);
|
||||||
|
FPx := FPx + (FTx - FTy) * (FTx + FTy) * r;
|
||||||
|
FPy := FPy + (2*FTx*FTy) * r;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--5--////////////////////////////////////////////////////////////////////////
|
//--5--////////////////////////////////////////////////////////////////////////
|
||||||
@ -291,9 +313,9 @@ procedure TXForm.FoldedHandkerchief;
|
|||||||
var
|
var
|
||||||
r: double;
|
r: double;
|
||||||
begin
|
begin
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
r := vars[6] * sqrt(FTx * FTx + FTy * FTy);
|
||||||
FPx := FPx + vars[6] * sin(FAngle + r) * r;
|
FPx := FPx + sin(FAngle + r) * r;
|
||||||
FPy := FPy + vars[6] * cos(FAngle - r) * r;
|
FPy := FPy + cos(FAngle - r) * r;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--7--////////////////////////////////////////////////////////////////////////
|
//--7--////////////////////////////////////////////////////////////////////////
|
||||||
@ -301,10 +323,10 @@ procedure TXForm.Heart;
|
|||||||
var
|
var
|
||||||
r: double;
|
r: double;
|
||||||
begin
|
begin
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
r := vars[7] * sqrt(FTx * FTx + FTy * FTy);
|
||||||
|
|
||||||
FPx := FPx + vars[7] * sin(FAngle * r) * r;
|
FPx := FPx + sin(FAngle * r) * r;
|
||||||
FPy := FPy + vars[7] * cos(FAngle * r) * -r;
|
FPy := FPy - cos(FAngle * r) * r;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--8--////////////////////////////////////////////////////////////////////////
|
//--8--////////////////////////////////////////////////////////////////////////
|
||||||
@ -313,29 +335,32 @@ const
|
|||||||
rPI: double = 0.31830989;
|
rPI: double = 0.31830989;
|
||||||
var
|
var
|
||||||
nx, ny, r: double;
|
nx, ny, r: double;
|
||||||
sinr, cosr: extended;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
nx := FTx * PI;
|
nx := FTx * PI;
|
||||||
ny := FTy * PI;
|
ny := FTy * PI;
|
||||||
|
|
||||||
r := sqrt(nx * nx + ny * ny);
|
r := sqrt(nx * nx + ny * ny);
|
||||||
SinCos(r, sinr, cosr);
|
SinCos(r, sinr, cosr);
|
||||||
FPx := FPx + vars[8] * sinr * FAngle * rPI;
|
// FPx := FPx + vars[8] * sinr * FAngle * rPI;
|
||||||
FPy := FPy + vars[8] * cosr * FAngle * rPI;
|
// FPy := FPy + vars[8] * cosr * FAngle * rPI;
|
||||||
|
r := vars[8] * FAngle * rPI;
|
||||||
|
FPx := FPx + sinr * r;
|
||||||
|
FPy := FPy + cosr * r;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--9--////////////////////////////////////////////////////////////////////////
|
//--9--////////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Spiral;
|
procedure TXForm.Spiral;
|
||||||
var
|
var
|
||||||
r, rr: double;
|
r, rr: double;
|
||||||
sinr, cosr: extended;
|
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 := 1 / r;
|
rr := vars[9] / r;
|
||||||
SinCos(r, sinr, cosr);
|
SinCos(r, sinr, cosr);
|
||||||
FPx := FPx + vars[9] * (FCosA + sinr) * rr;
|
FPx := FPx + (FCosA + sinr) * rr;
|
||||||
FPy := FPy + vars[9] * (FsinA - cosr) * rr;
|
FPy := FPy + (FsinA - cosr) * rr;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--10--///////////////////////////////////////////////////////////////////////
|
//--10--///////////////////////////////////////////////////////////////////////
|
||||||
@ -364,10 +389,10 @@ end;
|
|||||||
procedure TXForm.Square;
|
procedure TXForm.Square;
|
||||||
var
|
var
|
||||||
// r: double;
|
// r: double;
|
||||||
sinr, cosr: extended;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
// r := sqrt(FTx * FTx + FTy * FTy);
|
// r := sqrt(FTx * FTx + FTy * FTy);
|
||||||
SinCos(Flength, sinr, cosr);
|
SinCos(FLength, sinr, cosr);
|
||||||
FPx := FPx + vars[11] * FSinA * cosr;
|
FPx := FPx + vars[11] * FSinA * cosr;
|
||||||
FPy := FPy + vars[11] * FCosA * sinr;
|
FPy := FPy + vars[11] * FCosA * sinr;
|
||||||
end;
|
end;
|
||||||
@ -376,7 +401,7 @@ end;
|
|||||||
procedure TXForm.Ex;
|
procedure TXForm.Ex;
|
||||||
var
|
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(FTx * FTx + FTy * FTy);
|
||||||
n0 := sin(FAngle + r);
|
n0 := sin(FAngle + r);
|
||||||
@ -391,13 +416,13 @@ end;
|
|||||||
procedure TXForm.Julia;
|
procedure TXForm.Julia;
|
||||||
var
|
var
|
||||||
a,r: double;
|
a,r: double;
|
||||||
sinr, cosr: extended;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
r := Math.power(FTx * FTx + FTy * FTy, 0.25);
|
|
||||||
a := FAngle*0.5 + Trunc(random * 2) * PI;
|
a := FAngle*0.5 + Trunc(random * 2) * PI;
|
||||||
SinCos(a, sinr, cosr);
|
SinCos(a, sinr, cosr);
|
||||||
FPx := FPx + vars[13] * r * cosr;
|
r := vars[13] * sqrt(sqrt(FTx * FTx + FTy * FTy)); //Math.power(FTx * FTx + FTy * FTy, 0.25);
|
||||||
FPy := FPy + vars[13] * r * sinr;
|
FPx := FPx + r * cosr;
|
||||||
|
FPy := FPy + r * sinr;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--14--///////////////////////////////////////////////////////////////////////
|
//--14--///////////////////////////////////////////////////////////////////////
|
||||||
@ -417,6 +442,7 @@ end;
|
|||||||
|
|
||||||
//--15--///////////////////////////////////////////////////////////////////////
|
//--15--///////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Waves;
|
procedure TXForm.Waves;
|
||||||
|
{
|
||||||
var
|
var
|
||||||
dx,dy,nx,ny: double;
|
dx,dy,nx,ny: double;
|
||||||
begin
|
begin
|
||||||
@ -426,12 +452,16 @@ begin
|
|||||||
ny := FTy + c11 * sin(FTx / ((dy * dy) + EPS));
|
ny := FTy + c11 * sin(FTx / ((dy * dy) + EPS));
|
||||||
FPx := FPx + vars[15] * nx;
|
FPx := FPx + vars[15] * nx;
|
||||||
FPy := FPy + vars[15] * ny;
|
FPy := FPy + vars[15] * ny;
|
||||||
|
}
|
||||||
|
begin
|
||||||
|
FPx := FPx + vars[15] * (FTx + c10 * sin(FTy / ((c20 * c20) + EPS)));
|
||||||
|
FPy := FPy + vars[15] * (FTy + c11 * sin(FTx / ((c21 * c21) + EPS)));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--16--///////////////////////////////////////////////////////////////////////
|
//--16--///////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Fisheye;
|
procedure TXForm.Fisheye;
|
||||||
var
|
var
|
||||||
{ a,} r: double;
|
r: double;
|
||||||
begin
|
begin
|
||||||
{
|
{
|
||||||
// r := sqrt(FTx * FTx + FTy * FTy);
|
// r := sqrt(FTx * FTx + FTy * FTy);
|
||||||
@ -442,9 +472,10 @@ 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 / (sqrt(FTx * FTx + FTy * FTy) + 1);
|
r := 2 * vars[16] / (sqrt(FTx * FTx + FTy * FTy) + 1);
|
||||||
FPx := FPx + vars[16] * r * FTy;
|
// by the way, now we can clearly see that the original author messed X and Y:
|
||||||
FPy := FPy + vars[16] * r * FTx;
|
FPx := FPx + r * FTy;
|
||||||
|
FPy := FPy + r * FTx;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -452,7 +483,7 @@ end;
|
|||||||
procedure TXForm.Popcorn;
|
procedure TXForm.Popcorn;
|
||||||
var
|
var
|
||||||
dx, dy: double;
|
dx, dy: double;
|
||||||
nx, ny: double;
|
// nx, ny: double;
|
||||||
begin
|
begin
|
||||||
dx := tan(3 * FTy);
|
dx := tan(3 * FTy);
|
||||||
if (dx <> dx) then
|
if (dx <> dx) then
|
||||||
@ -460,24 +491,24 @@ begin
|
|||||||
dy := tan(3 * FTx); // NAN will raise an exception...
|
dy := tan(3 * FTx); // NAN will raise an exception...
|
||||||
if (dy <> dy) then
|
if (dy <> dy) then
|
||||||
dy := 0.0; // remove for speed?
|
dy := 0.0; // remove for speed?
|
||||||
nx := FTx + c20 * sin(dx);
|
// nx := FTx + c20 * sin(dx);
|
||||||
ny := FTy + c21 * sin(dy);
|
// ny := FTy + c21 * sin(dy);
|
||||||
FPx := FPx + vars[17] * nx;
|
// FPx := FPx + vars[17] * nx;
|
||||||
FPy := FPy + vars[17] * ny;
|
// FPy := FPy + vars[17] * ny;
|
||||||
|
FPx := FPx + vars[17] * (FTx + c20 * sin(dx));
|
||||||
|
FPy := FPy + vars[17] * (FTy + c21 * sin(dy));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--18--///////////////////////////////////////////////////////////////////////
|
//--18--///////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Exponential;
|
procedure TXForm.Exponential;
|
||||||
var
|
var
|
||||||
dx, dy: double;
|
d: double;
|
||||||
sinr, cosr: extended;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
dx := exp(FTx - 1); // exp(FTx)/ 2.718281828459045;
|
SinCos(PI * FTy, sinr, cosr);
|
||||||
// --Z-- (e^x)/e = e^(x-1), isn't it?!
|
d := vars[18] * exp(FTx - 1); // --Z-- (e^x)/e = e^(x-1), isn't it?!
|
||||||
dy := PI * FTy;
|
FPx := FPx + cosr * d;
|
||||||
SinCos(dy, sinr, cosr);
|
FPy := FPy + sinr * d;
|
||||||
FPx := FPx + vars[18] * cosr * dx;
|
|
||||||
FPy := FPy + vars[18] * sinr * dx;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--19--///////////////////////////////////////////////////////////////////////
|
//--19--///////////////////////////////////////////////////////////////////////
|
||||||
@ -488,24 +519,26 @@ var
|
|||||||
begin
|
begin
|
||||||
// r := sqrt(FTx * FTx + FTy * FTy);
|
// r := sqrt(FTx * FTx + FTy * FTy);
|
||||||
// sa := sin(FAngle);
|
// sa := sin(FAngle);
|
||||||
r := Math.Power(FLength, FSinA);
|
r := vars[19] * Math.Power(FLength, FSinA);
|
||||||
// nx := r * FCosA;
|
// nx := r * FCosA;
|
||||||
// ny := r * FSinA;
|
// ny := r * FSinA;
|
||||||
FPx := FPx + vars[19] * r * FCosA;
|
FPx := FPx + r * FCosA;
|
||||||
FPy := FPy + vars[19] * r * FSinA;
|
FPy := FPy + r * FSinA;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--20--///////////////////////////////////////////////////////////////////////
|
//--20--///////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Cosine;
|
procedure TXForm.Cosine;
|
||||||
var
|
var
|
||||||
nx, ny: double;
|
// nx, ny: double;
|
||||||
sinr, cosr: extended;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
SinCos(FTx * PI, sinr, cosr);
|
SinCos(FTx * PI, sinr, cosr);
|
||||||
nx := cosr * cosh(FTy);
|
// nx := cosr * cosh(FTy);
|
||||||
ny := -sinr * sinh(FTy);
|
// ny := -sinr * sinh(FTy);
|
||||||
FPx := FPx + vars[20] * nx;
|
// FPx := FPx + vars[20] * nx;
|
||||||
FPy := FPy + vars[20] * ny;
|
// FPy := FPy + vars[20] * ny;
|
||||||
|
FPx := FPx + vars[20] * cosr * cosh(FTy);
|
||||||
|
FPy := FPy - vars[20] * sinr * sinh(FTy);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--21--///////////////////////////////////////////////////////////////////////
|
//--21--///////////////////////////////////////////////////////////////////////
|
||||||
@ -513,14 +546,21 @@ procedure TXForm.Rings;
|
|||||||
var
|
var
|
||||||
r: double;
|
r: double;
|
||||||
dx: double;
|
dx: double;
|
||||||
sinr, cosr: extended;
|
// sinr, cosr: extended;
|
||||||
begin
|
begin
|
||||||
dx := sqr(c20) + EPS;
|
dx := sqr(c20) + EPS;
|
||||||
r := FLength;
|
// r := FLength;
|
||||||
r := r + dx - System.Int((r + dx)/(2 * dx)) * 2 * dx - dx + r * (1-dx);
|
// r := r + dx - System.Int((r + dx)/(2 * dx)) * 2 * dx - dx + r * (1-dx);
|
||||||
SinCos(FAngle, sinr, cosr);
|
// --Z-- ^^^^ heheeeee :-) ^^^^
|
||||||
FPx := FPx + vars[21] * r * cosr;
|
|
||||||
FPy := FPy + vars[21] * r * sinr;
|
// SinCos(FAngle, sinr, cosr);
|
||||||
|
// FPx := FPx + vars[21] * r * cosr;
|
||||||
|
// FPy := FPy + vars[21] * r * sinr;
|
||||||
|
r := vars[21] * (
|
||||||
|
2 * FLength + dx * (System.Int(FLength/(2 * dx) + 0.5) * 2 - FLength)
|
||||||
|
);
|
||||||
|
FPx := FPx + r * FCosA;
|
||||||
|
FPy := FPy + r * FSinA;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//--22--///////////////////////////////////////////////////////////////////////
|
//--22--///////////////////////////////////////////////////////////////////////
|
||||||
@ -528,13 +568,13 @@ procedure TXForm.Fan;
|
|||||||
var
|
var
|
||||||
r,t,a : double;
|
r,t,a : double;
|
||||||
dx, dy, dx2: double;
|
dx, dy, dx2: double;
|
||||||
sinr, cosr: extended;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
dy := c21;
|
dy := c21;
|
||||||
dx := PI * (sqr(c20) + EPS);
|
dx := PI * (sqr(c20) + EPS);
|
||||||
dx2 := dx/2;
|
dx2 := dx/2;
|
||||||
|
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
r := vars[22] * sqrt(FTx * FTx + FTy * 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
|
||||||
@ -543,8 +583,8 @@ begin
|
|||||||
a := FAngle + dx2;
|
a := FAngle + dx2;
|
||||||
SinCos(a, sinr, cosr);
|
SinCos(a, sinr, cosr);
|
||||||
|
|
||||||
FPx := FPx + vars[22] * r * cosr;
|
FPx := FPx + r * cosr;
|
||||||
FPy := FPy + vars[22] * r * sinr;
|
FPy := FPy + r * sinr;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -553,7 +593,7 @@ procedure TXForm.Triblob;
|
|||||||
var
|
var
|
||||||
r : double;
|
r : double;
|
||||||
Angle: double;
|
Angle: double;
|
||||||
sinr, cosr: extended;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
r := sqrt(FTx * FTx + FTy * 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
|
||||||
@ -573,7 +613,7 @@ procedure TXForm.Daisy;
|
|||||||
var
|
var
|
||||||
r : double;
|
r : double;
|
||||||
Angle: double;
|
Angle: double;
|
||||||
sinr, cosr: extended;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
r := sqrt(FTx * FTx + FTy * 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
|
||||||
@ -608,7 +648,7 @@ procedure TXForm.CRot;
|
|||||||
var
|
var
|
||||||
r : double;
|
r : double;
|
||||||
Angle: double;
|
Angle: double;
|
||||||
sinr, cosr: extended;
|
sinr, cosr: double;
|
||||||
begin
|
begin
|
||||||
r := sqrt(FTx * FTx + FTy * FTy);
|
r := sqrt(FTx * FTx + FTy * 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
|
||||||
@ -1113,7 +1153,7 @@ begin
|
|||||||
result := Format(' <xform weight="%g" color="%g" symmetry="%g" ', [density, color, symmetry]);
|
result := Format(' <xform weight="%g" color="%g" symmetry="%g" ', [density, color, symmetry]);
|
||||||
for i := 0 to nrvar - 1 do begin
|
for i := 0 to nrvar - 1 do begin
|
||||||
if vars[i] <> 0 then
|
if vars[i] <> 0 then
|
||||||
Result := Result + varnames(i) + format('="%f" ', [vars[i]]);
|
Result := Result + varnames(i) + format('="%g" ', [vars[i]]);
|
||||||
end;
|
end;
|
||||||
Result := Result + Format('coefs="%g %g %g %g %g %g" ', [c[0,0], c[0,1], c[1,0], c[1,1], c[2,0], c[2,1]]);
|
Result := Result + Format('coefs="%g %g %g %g %g %g" ', [c[0,0], c[0,1], c[1,0], c[1,1], c[2,0], c[2,1]]);
|
||||||
// Result := Result + Format('post="%g %g %g %g %g %g" ', [p[0,0], p[0,1], p[1,0], p[1,1], p[2,0], p[2,1]]);
|
// Result := Result + Format('post="%g %g %g %g %g %g" ', [p[0,0], p[0,1], p[1,0], p[1,1], p[2,0], p[2,1]]);
|
||||||
|
Loading…
Reference in New Issue
Block a user