diff options
author | Erich Eckner <git@eckner.net> | 2019-10-23 11:19:14 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2019-10-23 11:19:14 +0200 |
commit | 04886a105bab65b26d34ed06f1eb60f69aa0ce5f (patch) | |
tree | deb1a71d9aa280ec9a0bdb0a8daef4d2c7e9a1a1 | |
parent | 88b36373d95ec526823d9431a53bd5f2c681ed30 (diff) | |
download | epost-04886a105bab65b26d34ed06f1eb60f69aa0ce5f.tar.xz |
werteunit.pas: tLLWerte.radonTransformationsLineOut(): xStep und yStep selbst ermitteln
-rw-r--r-- | epostunit.pas | 22 | ||||
-rw-r--r-- | werteunit.inc | 10 | ||||
-rw-r--r-- | werteunit.pas | 12 |
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} |