some funny optimizations :-\
This commit is contained in:
parent
7bedaf4218
commit
1f58b0b896
@ -35,7 +35,7 @@ type
|
|||||||
FCosA: double;
|
FCosA: double;
|
||||||
FLength: double;
|
FLength: double;
|
||||||
CalculateAngle: boolean;
|
CalculateAngle: boolean;
|
||||||
CalculateLength: boolean;
|
// CalculateLength: boolean;
|
||||||
CalculateSinCos: boolean;
|
CalculateSinCos: boolean;
|
||||||
|
|
||||||
FRegVariations: array of TBaseVariation;
|
FRegVariations: array of TBaseVariation;
|
||||||
@ -211,9 +211,9 @@ 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 (vars[10] <> 0.0) or
|
CalculateSinCos := (vars[4] <> 0.0) or (vars[9] <> 0.0) or {z! (vars[10] <> 0.0) or}
|
||||||
(vars[11] <> 0.0) or (vars[16] <> 0.0) or (vars[19] <> 0.0) or
|
(vars[11] <> 0.0) or {z! (vars[16] <> 0.0)} or (vars[19] <> 0.0) or
|
||||||
(vars[21] <> 0.0);
|
(vars[21] <> 0.0);
|
||||||
|
|
||||||
end;
|
end;
|
||||||
@ -272,7 +272,7 @@ end;
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Polar;
|
procedure TXForm.Polar;
|
||||||
var
|
{var
|
||||||
ny: double;
|
ny: double;
|
||||||
rPI: double;
|
rPI: double;
|
||||||
begin
|
begin
|
||||||
@ -280,6 +280,10 @@ begin
|
|||||||
ny := sqrt(FTx * FTx + FTy * FTy) - 1.0;
|
ny := sqrt(FTx * FTx + FTy * FTy) - 1.0;
|
||||||
FPx := FPx + vars[5] * (FAngle*rPI);
|
FPx := FPx + vars[5] * (FAngle*rPI);
|
||||||
FPy := FPy + vars[5] * ny;
|
FPy := FPy + vars[5] * ny;
|
||||||
|
}
|
||||||
|
begin
|
||||||
|
FPx := FPx + vars[5] * FAngle * 0.31830989;
|
||||||
|
FPy := FPy + vars[5] * (sqrt(FTx * FTx + FTy * FTy) - 1.0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
@ -305,12 +309,12 @@ end;
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.Disc;
|
procedure TXForm.Disc;
|
||||||
|
const
|
||||||
|
rPI: double = 0.31830989;
|
||||||
var
|
var
|
||||||
nx, ny, r: double;
|
nx, ny, r: double;
|
||||||
rPI: double;
|
|
||||||
sinr, cosr: extended;
|
sinr, cosr: extended;
|
||||||
begin
|
begin
|
||||||
rPI := 0.31830989;
|
|
||||||
nx := FTx * PI;
|
nx := FTx * PI;
|
||||||
ny := FTy * PI;
|
ny := FTy * PI;
|
||||||
|
|
||||||
@ -318,7 +322,6 @@ begin
|
|||||||
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;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
@ -336,14 +339,25 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TXForm.hyperbolic;
|
procedure TXForm.Hyperbolic;
|
||||||
|
{
|
||||||
var
|
var
|
||||||
r: double;
|
r: double;
|
||||||
begin
|
begin
|
||||||
// r := sqrt(FTx * FTx + FTy * FTy) + 1E-6;
|
|
||||||
r := Flength + 1E-6;
|
r := Flength + 1E-6;
|
||||||
FPx := FPx + vars[10] * FSinA / r;
|
FPx := FPx + vars[10] * FSinA / r;
|
||||||
FPy := FPy + vars[10] * FCosA * r;
|
FPy := FPy + vars[10] * FCosA * r;
|
||||||
|
}
|
||||||
|
|
||||||
|
// --Z-- Yikes!!! SOMEONE SHOULD GO BACK TO SCHOOL!!!!!!!
|
||||||
|
// Scott Draves, you aren't so cool after all! :-))
|
||||||
|
// And did no one niticed it?!!
|
||||||
|
// After ALL THESE YEARS!!!
|
||||||
|
|
||||||
|
// Now watch and learn how to do this WITHOUT calculating sin and cos:
|
||||||
|
begin
|
||||||
|
FPx := FPx + vars[10] * FTx / (FTx * FTx + FTy * FTy + 1E-6);
|
||||||
|
FPy := FPy + vars[10] * FTy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
@ -419,12 +433,18 @@ procedure TXForm.Fisheye;
|
|||||||
var
|
var
|
||||||
{ a,} r: double;
|
{ a,} r: double;
|
||||||
begin
|
begin
|
||||||
|
{
|
||||||
// r := sqrt(FTx * FTx + FTy * FTy);
|
// r := sqrt(FTx * FTx + FTy * FTy);
|
||||||
// a := arctan2(FTx, FTy);
|
// a := arctan2(FTx, FTy);
|
||||||
// r := 2 * r / (r + 1);
|
// r := 2 * r / (r + 1);
|
||||||
r := 2 * Flength / (Flength + 1);
|
r := 2 * Flength / (Flength + 1);
|
||||||
FPx := FPx + vars[16] * r * FCosA;
|
FPx := FPx + vars[16] * r * FCosA;
|
||||||
FPy := FPy + vars[16] * r * FSinA;
|
FPy := FPy + vars[16] * r * FSinA;
|
||||||
|
}
|
||||||
|
// --Z-- and again, sin & cos are NOT necessary here:
|
||||||
|
r := 2 / (sqrt(FTx * FTx + FTy * FTy) + 1);
|
||||||
|
FPx := FPx + vars[16] * r * FTy;
|
||||||
|
FPy := FPy + vars[16] * r * FTx;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user