summaryrefslogtreecommitdiff
path: root/epostunit.pas
diff options
context:
space:
mode:
Diffstat (limited to 'epostunit.pas')
-rw-r--r--epostunit.pas60
1 files changed, 28 insertions, 32 deletions
diff --git a/epostunit.pas b/epostunit.pas
index d59d222..c0df199 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -135,7 +135,7 @@ type
function disk2kont(x: tExtPoint): tExtPoint; overload; inline;
function disk2kontFak(senkrecht: boolean; x: longint): extended; overload; inline;
function disk2kontFak(dir: char; x: longint): extended; overload;
- procedure schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean);
+ procedure schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean; var letzterWert: extended; entspringen: extended);
function ermittleHintergrund(sT: boolean; threads: longint; hintergrundAbzugsArt: tHintergrundAbzugsArt; out hintergrund: tExtendedArray): boolean;
procedure holeRAM(ausgaben: byte); inline;
public
@@ -183,8 +183,7 @@ type
procedure verschiebe(threads: longint; richtung: tInt64Point);
procedure ermittlePhasenWinkel(threads: longint; skalierung: extended);
procedure fft2dNachbearbeitung(threads: longint; nB: tFFTDatenordnung);
- procedure schreibeWert(var f: textfile; p: tInt64Point); overload; inline;
- procedure schreibeWert(var f: textfile; x,y: longint); overload; inline;
+ procedure schreibeWert(var f: textfile; p: tExtPoint; var letzterWert: extended; entspringen: extended); inline;
function exprToFloat(sT: boolean; s: string): extended;
function findeMaximum(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean;
function paramsDump: string;
@@ -193,10 +192,6 @@ type
property transformationen: tTransformation read rTransformationen write wTransformationen;
property _xSteps: longint read rXSteps write wXSteps;
property _tSiz: longint read rTSiz write wTSiz;
-// property _xStart: extended read rXStart write wXStart;
-// property _xStop: extended read rXStop write wXStop;
-// property _tStart: extended read rTStart write wTStart;
-// property _tStop: extended read rTStop write wTStop;
property _np: extended read rNp write wNp;
property _beta: extended read rBeta write wBeta;
property _minW: extended read rMinW write wMinW;
@@ -2098,15 +2093,15 @@ begin
end;
end;
-procedure tWerte.schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean);
+procedure tWerte.schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean; var letzterWert: extended; entspringen: extended);
begin
case genauigkeit of
gSingle:
- sWerte.schreibeWertIntegriert(f,i,hor);
+ sWerte.schreibeWertIntegriert(f,i,hor,letzterWert,entspringen);
gDouble:
- dWerte.schreibeWertIntegriert(f,i,hor);
+ dWerte.schreibeWertIntegriert(f,i,hor,letzterWert,entspringen);
gExtended:
- eWerte.schreibeWertIntegriert(f,i,hor);
+ eWerte.schreibeWertIntegriert(f,i,hor,letzterWert,entspringen);
end{of case};
end;
@@ -5381,13 +5376,13 @@ end;
function tWerte.erzeugeLineout(sT: boolean; f: tMyStringList): boolean;
var
- ab: t2x2Extended;
- datei,s: string;
- fOut: textfile;
- bekannteBefehle: tMyStringList;
- Zeit: extended;
- i,schritte: longint;
- integriere,iWaag: boolean;
+ ab: t2x2Extended;
+ datei,s: string;
+ fOut: textfile;
+ bekannteBefehle: tMyStringList;
+ Zeit,entspringen,letzterWert: extended;
+ i,schritte: longint;
+ integriere,iWaag: boolean;
begin
result:=false;
warteAufBeendigungDesLeseThreads;
@@ -5403,6 +5398,7 @@ begin
datei:='';
integriere:=false;
iWaag:=false;
+ entspringen:=-1;
bekannteBefehle:=tMyStringList.create;
repeat
if not f.metaReadln(s,true) then begin
@@ -5446,6 +5442,10 @@ begin
ab['y','y']:=kont2disk('y',exprToFloat(sT,s));
continue;
end;
+ if istDasBefehl('entspringen',s,bekannteBefehle,true) then begin
+ entspringen:=exprToFloat(sT,s);
+ continue;
+ end;
bekannteBefehle.sort;
gibAus('Verstehe Option '''+s+''' nicht bei Erzeugung eines Lineouts!'#10'Ich kenne:'#10+bekannteBefehle.text,3);
bekannteBefehle.free;
@@ -5462,25 +5462,26 @@ begin
assignFile(fOut,datei);
rewrite(fOut);
end;
+ letzterWert:=nan;
if integriere then begin
if not sT then begin
if iWaag then begin
if ab['y','y']>ab['x','y'] then begin
for i:=round(ab['x','y']) to round(ab['y','y']) do
- schreibeWertIntegriert(fOut,i,iWaag);
+ schreibeWertIntegriert(fOut,i,iWaag,letzterWert,entspringen);
end
else
for i:=round(ab['x','y']) downto round(ab['y','y']) do
- schreibeWertIntegriert(fOut,i,iWaag);
+ schreibeWertIntegriert(fOut,i,iWaag,letzterWert,entspringen);
end
else
if ab['y','x']>ab['x','x'] then begin
for i:=round(ab['x','x']) to round(ab['y','x']) do
- schreibeWertIntegriert(fOut,i,iWaag);
+ schreibeWertIntegriert(fOut,i,iWaag,letzterWert,entspringen);
end
else
for i:=round(ab['x','x']) downto round(ab['y','x']) do
- schreibeWertIntegriert(fOut,i,iWaag);
+ schreibeWertIntegriert(fOut,i,iWaag,letzterWert,entspringen);
end;
end
else begin
@@ -5495,7 +5496,7 @@ begin
end;
if not sT then
for i:=0 to schritte do
- schreibeWert(fOut,round(ab['x']+(i/schritte)*(ab['y']-ab['x'])));
+ schreibeWert(fOut,ab['x']+(i/schritte)*(ab['y']-ab['x']),letzterWert,entspringen);
end;
if not sT then begin
closeFile(fOut);
@@ -5545,17 +5546,12 @@ begin
result:=true;
end;
-procedure tWerte.schreibeWert(var f: textfile; p: tInt64Point);
-begin
- schreibeWert(f,p['x'],p['y']);
-end;
-
-procedure tWerte.schreibeWert(var f: textfile; x,y: longint);
+procedure tWerte.schreibeWert(var f: textfile; p: tExtPoint; var letzterWert: extended; entspringen: extended);
begin
case genauigkeit of
- gSingle: sWerte.schreibeWert(f,x,y,disk2kont(extPoint(x,y)));
- gDouble: dWerte.schreibeWert(f,x,y,disk2kont(extPoint(x,y)));
- gExtended: eWerte.schreibeWert(f,x,y,disk2kont(extPoint(x,y)));
+ gSingle: sWerte.schreibeWert(f,round(p['x']),round(p['y']),disk2kont(p),letzterWert,entspringen);
+ gDouble: dWerte.schreibeWert(f,round(p['x']),round(p['y']),disk2kont(p),letzterWert,entspringen);
+ gExtended: eWerte.schreibeWert(f,round(p['x']),round(p['y']),disk2kont(p),letzterWert,entspringen);
end{of Case};
end;