summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2019-10-23 11:19:14 +0200
committerErich Eckner <git@eckner.net>2019-10-23 11:19:14 +0200
commit04886a105bab65b26d34ed06f1eb60f69aa0ce5f (patch)
treedeb1a71d9aa280ec9a0bdb0a8daef4d2c7e9a1a1
parent88b36373d95ec526823d9431a53bd5f2c681ed30 (diff)
downloadepost-04886a105bab65b26d34ed06f1eb60f69aa0ce5f.tar.xz
werteunit.pas: tLLWerte.radonTransformationsLineOut(): xStep und yStep selbst ermitteln
-rw-r--r--epostunit.pas22
-rw-r--r--werteunit.inc10
-rw-r--r--werteunit.pas12
3 files changed, 20 insertions, 24 deletions
diff --git a/epostunit.pas b/epostunit.pas
index 9025534..1a7a556 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -9861,39 +9861,35 @@ begin
end;
procedure tRadonTransformationsLineOutThread.stExecute;
-var
- dX,dY: extended;
begin
gibAus('RadonTransformationsLineOutThread gestartet',1);
- dX:=(zi._xStop-zi._xStart)/(zi._xSteps-1);
- dY:=(zi._tStop-zi._tStart)/(zi._tSiz-1);
case zi.genauigkeit of
gSingle:
case qu.genauigkeit of
gSingle:
- zi.sWerte.radonTransformationsLineOut(xMi,xMa,dX,dY,pTLLWerteSingle(@qu.sWerte));
+ zi.sWerte.radonTransformationsLineOut(xMi,xMa,pTLLWerteSingle(@qu.sWerte));
gDouble:
- zi.sWerte.radonTransformationsLineOut(xMi,xMa,dX,dY,pTLLWerteDouble(@qu.dWerte));
+ zi.sWerte.radonTransformationsLineOut(xMi,xMa,pTLLWerteDouble(@qu.dWerte));
gExtended:
- zi.sWerte.radonTransformationsLineOut(xMi,xMa,dX,dY,pTLLWerteExtended(@qu.eWerte));
+ zi.sWerte.radonTransformationsLineOut(xMi,xMa,pTLLWerteExtended(@qu.eWerte));
end{of case};
gDouble:
case qu.genauigkeit of
gSingle:
- zi.dWerte.radonTransformationsLineOut(xMi,xMa,dX,dY,pTLLWerteSingle(@qu.sWerte));
+ zi.dWerte.radonTransformationsLineOut(xMi,xMa,pTLLWerteSingle(@qu.sWerte));
gDouble:
- zi.dWerte.radonTransformationsLineOut(xMi,xMa,dX,dY,pTLLWerteDouble(@qu.dWerte));
+ zi.dWerte.radonTransformationsLineOut(xMi,xMa,pTLLWerteDouble(@qu.dWerte));
gExtended:
- zi.dWerte.radonTransformationsLineOut(xMi,xMa,dX,dY,pTLLWerteExtended(@qu.eWerte));
+ zi.dWerte.radonTransformationsLineOut(xMi,xMa,pTLLWerteExtended(@qu.eWerte));
end{of case};
gExtended:
case qu.genauigkeit of
gSingle:
- zi.eWerte.radonTransformationsLineOut(xMi,xMa,dX,dY,pTLLWerteSingle(@qu.sWerte));
+ zi.eWerte.radonTransformationsLineOut(xMi,xMa,pTLLWerteSingle(@qu.sWerte));
gDouble:
- zi.eWerte.radonTransformationsLineOut(xMi,xMa,dX,dY,pTLLWerteDouble(@qu.dWerte));
+ zi.eWerte.radonTransformationsLineOut(xMi,xMa,pTLLWerteDouble(@qu.dWerte));
gExtended:
- zi.eWerte.radonTransformationsLineOut(xMi,xMa,dX,dY,pTLLWerteExtended(@qu.eWerte));
+ zi.eWerte.radonTransformationsLineOut(xMi,xMa,pTLLWerteExtended(@qu.eWerte));
end{of case};
end{of case};
gibAus('RadonTransformationsLineOutThread beendet',1);
diff --git a/werteunit.inc b/werteunit.inc
index 3d998a9..ef1eaf0 100644
--- a/werteunit.inc
+++ b/werteunit.inc
@@ -171,7 +171,7 @@ end;
{$ENDIF}
{$IFDEF tLLWerte_radonTransformationsLineOut}
-//procedure tLLWerte.radonTransformationsLineOut(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteSingle);
+//procedure tLLWerte.radonTransformationsLineOut(xMin,xMax: longint; qu: pTLLWerteSingle);
var
oX,oY,iXG,iYG: int64;
cX,sX,iX,iY,iXF,iYF: extended;
@@ -180,11 +180,11 @@ begin
// x-&y-doResSmi-geornetem Wert auf der Ursprungsgerade mit Winkel oX*XStep; Position oY*yStep
// Wir gehen davon aus, dass das Feld groß genug ist, sodass wir die Mitte nicht erreichen.
for oX:=xMin to xMax do begin
- cX:=cos(oX*xStep);
- sX:=sin(oX*xStep);
+ cX:=sin((oX/params.xSteps-1/2)*pi);
+ sX:=-cos((oX/params.xSteps-1/2)*pi);
for oY:=0 to params.tSiz div 2 do begin
- iX:=oY*yStep*cX;
- iY:=oY*yStep*sX;
+ iX:=oY*cX;
+ iY:=oY*sX;
iXG:=floor(iX);
iXF:=iX-iXG;
iYG:=floor(iY);
diff --git a/werteunit.pas b/werteunit.pas
index 519ede4..0ef6e5e 100644
--- a/werteunit.pas
+++ b/werteunit.pas
@@ -56,9 +56,9 @@ type
function liesDateien(dateien: tGenerischeInputDateiInfoArray): boolean;
function fft(senkrecht,invers: boolean; algo: tFFTAlgorithmus; fen: tFenster; hg: tExtendedArray; out pvFehler: extended): boolean; overload; inline;
function fft(sMin,sMax: longint; senkrecht,invers: boolean; algo: tFFTAlgorithmus; fen: tFenster; hg: tExtendedArray; out pvFehler: extended): boolean; overload;
- procedure radonTransformationsLineOut(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteSingle); overload;
- procedure radonTransformationsLineOut(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteDouble); overload;
- procedure radonTransformationsLineOut(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteExtended); overload;
+ procedure radonTransformationsLineOut(xMin,xMax: longint; qu: pTLLWerteSingle); overload;
+ procedure radonTransformationsLineOut(xMin,xMax: longint; qu: pTLLWerteDouble); overload;
+ procedure radonTransformationsLineOut(xMin,xMax: longint; qu: pTLLWerteExtended); overload;
procedure spiegle; overload;
procedure spiegle(tMin,tMax: longint); overload;
procedure fft2dNachbearbeitungA(nB: tFFTDatenordnung);
@@ -911,11 +911,11 @@ begin
end;
{$DEFINE tLLWerte_radonTransformationsLineOut}
-procedure tLLWerte.radonTransformationsLineOut(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteSingle);
+procedure tLLWerte.radonTransformationsLineOut(xMin,xMax: longint; qu: pTLLWerteSingle);
{$INCLUDE werteunit.inc}
-procedure tLLWerte.radonTransformationsLineOut(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteDouble);
+procedure tLLWerte.radonTransformationsLineOut(xMin,xMax: longint; qu: pTLLWerteDouble);
{$INCLUDE werteunit.inc}
-procedure tLLWerte.radonTransformationsLineOut(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteExtended);
+procedure tLLWerte.radonTransformationsLineOut(xMin,xMax: longint; qu: pTLLWerteExtended);
{$INCLUDE werteunit.inc}
{$UNDEF tLLWerte_radonTransformationsLineOut}