summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-10-04 15:58:37 +0200
committerErich Eckner <git@eckner.net>2017-10-04 15:58:37 +0200
commit0c459200dc8ed25d8deb33b8e5017b47b107f321 (patch)
tree03f9214a27d92735c7e63ece77d46069709f2164
parent635d090145bf455943f77e4c9c1d87311486fe47 (diff)
downloadepost-0c459200dc8ed25d8deb33b8e5017b47b107f321.tar.xz
erzeugeLineout kann nun Werte "entspringen"
-rw-r--r--epost.lps115
-rw-r--r--epostunit.pas60
-rw-r--r--werteunit.pas51
3 files changed, 115 insertions, 111 deletions
diff --git a/epost.lps b/epost.lps
index 56dc453..fc1fc07 100644
--- a/epost.lps
+++ b/epost.lps
@@ -22,9 +22,10 @@
<Unit2>
<Filename Value="epostunit.pas"/>
<IsPartOfProject Value="True"/>
+ <IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="158"/>
- <CursorPos X="27" Y="186"/>
+ <TopLine Value="5471"/>
+ <CursorPos X="21" Y="5499"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit2>
@@ -39,15 +40,14 @@
<Filename Value="werteunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="8"/>
- <TopLine Value="47"/>
- <CursorPos X="61" Y="64"/>
+ <TopLine Value="865"/>
+ <CursorPos X="16" Y="882"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
- <IsVisibleTab Value="True"/>
<EditorIndex Value="11"/>
<TopLine Value="1954"/>
<CursorPos Y="1987"/>
@@ -216,122 +216,123 @@
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="epostunit.pas"/>
- <Caret Line="5362" Column="20" TopLine="5334"/>
+ <Caret Line="178" Column="28" TopLine="172"/>
</Position1>
<Position2>
<Filename Value="epostunit.pas"/>
- <Caret Line="5365" Column="20" TopLine="5337"/>
+ <Caret Line="5382" Column="31" TopLine="5353"/>
</Position2>
<Position3>
<Filename Value="epostunit.pas"/>
- <Caret Line="5370" Column="18" TopLine="5342"/>
+ <Caret Line="2109" Column="68" TopLine="2083"/>
</Position3>
<Position4>
<Filename Value="epostunit.pas"/>
- <Caret Line="5372" Column="18" TopLine="5344"/>
+ <Caret Line="2105" Column="69" TopLine="2087"/>
</Position4>
<Position5>
- <Filename Value="epostunit.pas"/>
- <Caret Line="5374" Column="18" TopLine="5346"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="65" Column="37" TopLine="47"/>
</Position5>
<Position6>
<Filename Value="epostunit.pas"/>
- <Caret Line="5864" Column="14" TopLine="5836"/>
+ <Caret Line="2105" Column="69" TopLine="2087"/>
</Position6>
<Position7>
<Filename Value="epostunit.pas"/>
- <Caret Line="5870" Column="14" TopLine="5842"/>
+ <Caret Line="5503" Column="97" TopLine="5486"/>
</Position7>
<Position8>
- <Filename Value="typenunit.pas"/>
- <Caret Line="340" TopLine="324"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="897" Column="86" TopLine="890"/>
</Position8>
<Position9>
- <Filename Value="typenunit.pas"/>
- <Caret Line="1882" Column="30" TopLine="1853"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5504" Column="97" TopLine="5487"/>
</Position9>
<Position10>
- <Filename Value="typenunit.pas"/>
- <Caret Line="1903" Column="30" TopLine="1874"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="186" Column="3" TopLine="171"/>
</Position10>
<Position11>
- <Filename Value="typenunit.pas"/>
- <Caret Line="1910" Column="30" TopLine="1881"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5504" Column="9" TopLine="5487"/>
</Position11>
<Position12>
- <Filename Value="typenunit.pas"/>
- <Caret Line="1933" Column="30" TopLine="1904"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="138" Column="81" TopLine="120"/>
</Position12>
<Position13>
- <Filename Value="typenunit.pas"/>
- <Caret Line="1979" Column="31" TopLine="1950"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="2096" Column="132" TopLine="2079"/>
</Position13>
<Position14>
- <Filename Value="typenunit.pas"/>
- <Caret Line="1988" Column="31" TopLine="1959"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5554" Column="78" TopLine="5531"/>
</Position14>
<Position15>
- <Filename Value="typenunit.pas"/>
- <Caret Line="1994" Column="31" TopLine="1965"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5549" Column="51" TopLine="5531"/>
</Position15>
<Position16>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2001" Column="31" TopLine="1972"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="186" Column="52" TopLine="169"/>
</Position16>
<Position17>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2067" Column="29" TopLine="2038"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5499" Column="27" TopLine="5482"/>
</Position17>
<Position18>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2082" Column="29" TopLine="2053"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5549" Column="56" TopLine="5532"/>
</Position18>
<Position19>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2088" Column="29" TopLine="2059"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5553" Column="65" TopLine="5534"/>
</Position19>
<Position20>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2099" Column="29" TopLine="2070"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5549" Column="60" TopLine="5534"/>
</Position20>
<Position21>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2411" Column="45" TopLine="2382"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="64" Column="3" TopLine="46"/>
</Position21>
<Position22>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2418" TopLine="2389"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="874" TopLine="854"/>
</Position22>
<Position23>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2421" Column="45" TopLine="2392"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="893" Column="9" TopLine="860"/>
</Position23>
<Position24>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2428" TopLine="2399"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="894" Column="3" TopLine="878"/>
</Position24>
<Position25>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2614" Column="30" TopLine="2585"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="889" Column="29" TopLine="875"/>
</Position25>
<Position26>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2740" Column="35" TopLine="2711"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="62" Column="27" TopLine="45"/>
</Position26>
<Position27>
- <Filename Value="epostunit.pas"/>
- <Caret Line="5859" Column="50" TopLine="5848"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="63" Column="27" TopLine="45"/>
</Position27>
<Position28>
- <Filename Value="epostunit.pas"/>
- <Caret Line="5461" Column="29" TopLine="5435"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="884" TopLine="864"/>
</Position28>
<Position29>
<Filename Value="epostunit.pas"/>
+ <Caret Line="5549" Column="25" TopLine="5534"/>
</Position29>
<Position30>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2826" Column="56" TopLine="2797"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="186" Column="27" TopLine="170"/>
</Position30>
</JumpHistory>
</ProjectSession>
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;
diff --git a/werteunit.pas b/werteunit.pas
index 0e65ed2..6629ac5 100644
--- a/werteunit.pas
+++ b/werteunit.pas
@@ -59,10 +59,9 @@ type
procedure fft2dNachbearbeitungB(xMin,xMax: longint; nB: tFFTDatenordnung);
procedure fft2dNachbearbeitungVerdoppeln(nB: tFFTDatenordnung);
procedure fft2dNachbearbeitungKomplex(xMin,xMax: longint; nB: tFFTDatenordnung);
- procedure schreibeWert(var f: textfile; x,y: longint; beschriftung: tExtPoint); overload; inline;
- procedure schreibeWert(var f: textfile; x,y: longint); overload; inline;
+ procedure schreibeWert(var f: textfile; x,y: longint; beschriftung: tExtPoint; var letzterWert: extended; entspringen: extended); overload; inline;
procedure schreibeWert(var f: textfile; xBeschr,yBeschr,wert: extended); overload; inline;
- procedure schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean);
+ procedure schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean; var letzterWert: extended; entspringen: extended);
procedure erzeugeBinning(senkrecht,linien: boolean; x0,dx: extended; s: string);
procedure holeRAM; inline; overload;
procedure holeRAM(ausgaben: byte); inline; overload;
@@ -869,24 +868,21 @@ begin
result:=not (in0 or out0);
end;
-procedure tLLWerte.schreibeWert(var f: textfile; x,y: longint; beschriftung: tExtPoint);
-begin
- schreibeWert(f,beschriftung['x'],beschriftung['y'],werte[x+y*params.xSteps]);
-end;
-
-procedure tLLWerte.schreibeWert(var f: textfile; x,y: longint);
+procedure tLLWerte.schreibeWert(var f: textfile; x,y: longint; beschriftung: tExtPoint; var letzterWert: extended; entspringen: extended);
var
- pkt: tExtPoint;
+ tmp: extended;
begin
- if params.xStop=params.xStart then
- pkt['x']:=params.xStop
- else
- pkt['x']:=params.xStart+x/(params.xSteps-1)*(params.xStop-params.xStart);
- if params.tStop=params.tStart then
- pkt['y']:=params.tStop
- else
- pkt['y']:=params.tStart+y/(params.tSiz-1)*(params.tStop-params.tStart);
- schreibeWert(f,x,y,pkt);
+ tmp:=werte[x+y*params.xSteps];
+ if isNaN(letzterWert) or (entspringen<0) then
+ letzterWert:=tmp;
+ if entspringen>0 then begin
+ while tmp>=letzterWert+entspringen/2 do
+ tmp:=tmp-entspringen;
+ while tmp<letzterWert-entspringen/2 do
+ tmp:=tmp+entspringen;
+ end;
+ letzterWert:=tmp;
+ schreibeWert(f,beschriftung['x'],beschriftung['y'],tmp);
end;
procedure tLLWerte.schreibeWert(var f: textfile; xBeschr,yBeschr,wert: extended);
@@ -894,7 +890,7 @@ begin
writeln(f,myFloatToStr(xBeschr)+' '+myFloatToStr(yBeschr)+' '+myFloatToStr(wert));
end;
-procedure tLLWerte.schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean);
+procedure tLLWerte.schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean; var letzterWert: extended; entspringen: extended);
var
j: longint;
tmp: extended;
@@ -903,13 +899,24 @@ begin
if hor then begin
for j:=0 to params.xSteps-1 do
tmp:=tmp+werte[j+i*params.xSteps];
- schreibeWert(f,(params.xSteps-1)/2,i,tmp);
end
else begin
for j:=0 to params.tSiz-1 do
tmp:=tmp+werte[i+j*params.xSteps];
- schreibeWert(f,i,(params.tSiz-1)/2,tmp);
end;
+ if isNaN(letzterWert) or (entspringen<0) then
+ letzterWert:=tmp;
+ if entspringen>0 then begin
+ while tmp>=letzterWert + entspringen/2 do
+ tmp:=tmp-entspringen;
+ while tmp<letzterWert - entspringen/2 do
+ tmp:=tmp+entspringen;
+ end;
+ letzterWert:=tmp;
+ if hor then
+ schreibeWert(f,(params.xSteps-1)/2,i,tmp)
+ else
+ schreibeWert(f,i,(params.tSiz-1)/2,tmp);
end;
procedure tLLWerte.erzeugeBinning(senkrecht,linien: boolean; x0,dx: extended; s: string);