diff options
author | Erich Eckner <git@eckner.net> | 2017-10-04 15:58:37 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-10-04 15:58:37 +0200 |
commit | 0c459200dc8ed25d8deb33b8e5017b47b107f321 (patch) | |
tree | 03f9214a27d92735c7e63ece77d46069709f2164 | |
parent | 635d090145bf455943f77e4c9c1d87311486fe47 (diff) | |
download | epost-0c459200dc8ed25d8deb33b8e5017b47b107f321.tar.xz |
erzeugeLineout kann nun Werte "entspringen"
-rw-r--r-- | epost.lps | 115 | ||||
-rw-r--r-- | epostunit.pas | 60 | ||||
-rw-r--r-- | werteunit.pas | 51 |
3 files changed, 115 insertions, 111 deletions
@@ -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); |