summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-12-19 10:36:52 +0100
committerErich Eckner <git@eckner.net>2017-12-19 10:36:52 +0100
commit43657256cfe47f7afe681730351e27f19b48cce3 (patch)
treee56fa39fdf56354e47bc8be80ad5d986100f6004
parent7ffe2953de866595f94f09fe08aa9ce1699bd28f (diff)
downloadepost-43657256cfe47f7afe681730351e27f19b48cce3.tar.xz
ermittlePhase kann nun auch entspringen
-rw-r--r--epost.lpi25
-rw-r--r--epost.lps144
-rw-r--r--epostunit.pas103
-rw-r--r--typenunit.pas51
-rw-r--r--werteunit.pas44
5 files changed, 278 insertions, 89 deletions
diff --git a/epost.lpi b/epost.lpi
index 6c5f89e..490d82c 100644
--- a/epost.lpi
+++ b/epost.lpi
@@ -34,15 +34,12 @@
<WorkingDirectory Value="/home_raid/erich/Dokumente/Paper/xrom/simulationen/"/>
</local>
</RunParams>
- <RequiredPackages Count="2">
+ <RequiredPackages Count="1">
<Item1>
- <PackageName Value="LCLBase"/>
- </Item1>
- <Item2>
<PackageName Value="LazUtils"/>
- </Item2>
+ </Item1>
</RequiredPackages>
- <Units Count="10">
+ <Units Count="9">
<Unit0>
<Filename Value="epost.lpr"/>
<IsPartOfProject Value="True"/>
@@ -56,33 +53,29 @@
<IsPartOfProject Value="True"/>
</Unit2>
<Unit3>
- <Filename Value="fileunit.pas"/>
+ <Filename Value="werteunit.pas"/>
<IsPartOfProject Value="True"/>
</Unit3>
<Unit4>
- <Filename Value="werteunit.pas"/>
+ <Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
</Unit4>
<Unit5>
- <Filename Value="typenunit.pas"/>
+ <Filename Value="../units/fftunit.pas"/>
<IsPartOfProject Value="True"/>
</Unit5>
<Unit6>
- <Filename Value="../units/fftunit.pas"/>
+ <Filename Value="../units/fftunit.inc"/>
<IsPartOfProject Value="True"/>
</Unit6>
<Unit7>
- <Filename Value="../units/fftunit.inc"/>
+ <Filename Value="gauszFit.inc"/>
<IsPartOfProject Value="True"/>
</Unit7>
<Unit8>
- <Filename Value="gauszFit.inc"/>
- <IsPartOfProject Value="True"/>
- </Unit8>
- <Unit9>
<Filename Value="werteunit.inc"/>
<IsPartOfProject Value="True"/>
- </Unit9>
+ </Unit8>
</Units>
</ProjectOptions>
<CompilerOptions>
diff --git a/epost.lps b/epost.lps
index b7e57ee..c58d237 100644
--- a/epost.lps
+++ b/epost.lps
@@ -7,7 +7,6 @@
<Unit0>
<Filename Value="epost.lpr"/>
<IsPartOfProject Value="True"/>
- <IsVisibleTab Value="True"/>
<TopLine Value="164"/>
<CursorPos Y="182"/>
<UsageCount Value="202"/>
@@ -24,14 +23,13 @@
<Filename Value="epostunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="2759"/>
- <CursorPos X="40" Y="2781"/>
+ <TopLine Value="2045"/>
+ <CursorPos X="26" Y="2053"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="fileunit.pas"/>
- <IsPartOfProject Value="True"/>
<EditorIndex Value="-1"/>
<CursorPos Y="204"/>
<UsageCount Value="200"/>
@@ -39,9 +37,10 @@
<Unit4>
<Filename Value="werteunit.pas"/>
<IsPartOfProject Value="True"/>
+ <IsVisibleTab Value="True"/>
<EditorIndex Value="9"/>
- <TopLine Value="890"/>
- <CursorPos X="55" Y="924"/>
+ <TopLine Value="1878"/>
+ <CursorPos X="27" Y="1908"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit4>
@@ -49,8 +48,8 @@
<Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="12"/>
- <TopLine Value="249"/>
- <CursorPos X="71" Y="269"/>
+ <TopLine Value="3399"/>
+ <CursorPos X="68" Y="3427"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit5>
@@ -86,7 +85,7 @@
<EditorIndex Value="10"/>
<TopLine Value="14"/>
<CursorPos X="41" Y="32"/>
- <UsageCount Value="125"/>
+ <UsageCount Value="127"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
@@ -94,14 +93,14 @@
<EditorIndex Value="8"/>
<TopLine Value="498"/>
<CursorPos X="85" Y="515"/>
- <UsageCount Value="63"/>
+ <UsageCount Value="64"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
<Filename Value="../units/lowlevelunit.pas"/>
<EditorIndex Value="7"/>
- <TopLine Value="590"/>
- <CursorPos X="17" Y="619"/>
+ <TopLine Value="902"/>
+ <CursorPos Y="920"/>
<UsageCount Value="100"/>
<Loaded Value="True"/>
</Unit11>
@@ -118,7 +117,7 @@
<EditorIndex Value="2"/>
<TopLine Value="126"/>
<CursorPos X="7" Y="147"/>
- <UsageCount Value="77"/>
+ <UsageCount Value="78"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
@@ -189,130 +188,129 @@
<EditorIndex Value="6"/>
<TopLine Value="87"/>
<CursorPos X="3" Y="18"/>
- <UsageCount Value="12"/>
+ <UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit23>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="196" Column="136" TopLine="175"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="428" Column="19" TopLine="410"/>
</Position1>
<Position2>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="100" Column="41" TopLine="82"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="6123" Column="46" TopLine="6094"/>
</Position2>
<Position3>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="33" Column="24" TopLine="15"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="6121" Column="23" TopLine="6115"/>
</Position3>
<Position4>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="76" Column="14" TopLine="47"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="189" Column="25" TopLine="173"/>
</Position4>
<Position5>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="90" Column="14" TopLine="61"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="1893" Column="60" TopLine="1871"/>
</Position5>
<Position6>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="100" Column="27" TopLine="71"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4486" Column="15" TopLine="4461"/>
</Position6>
<Position7>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="206" Column="45" TopLine="186"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="6121" Column="28" TopLine="6092"/>
</Position7>
<Position8>
- <Filename Value="epost.lpr"/>
- <Caret Line="260" Column="53" TopLine="228"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="8202" Column="27" TopLine="8179"/>
</Position8>
<Position9>
<Filename Value="epostunit.pas"/>
- <Caret Line="157" Column="30" TopLine="140"/>
</Position9>
<Position10>
- <Filename Value="epost.lpr"/>
- <Caret Line="250" Column="93" TopLine="228"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="189" Column="25" TopLine="161"/>
</Position10>
<Position11>
- <Filename Value="epost.lpr"/>
- <Caret Line="397" Column="34" TopLine="368"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4486" Column="15" TopLine="4458"/>
</Position11>
<Position12>
- <Filename Value="epost.lpr"/>
- <Caret Line="414" TopLine="391"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="3403" Column="15" TopLine="3385"/>
</Position12>
<Position13>
- <Filename Value="epost.lpr"/>
- <Caret Line="182" TopLine="158"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="26" Column="25" TopLine="6"/>
</Position13>
<Position14>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="98" Column="39" TopLine="83"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="3414" TopLine="3381"/>
</Position14>
<Position15>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="170" Column="28" TopLine="162"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="3389" Column="99" TopLine="3372"/>
</Position15>
<Position16>
- <Filename Value="epost.lpr"/>
- <Caret Line="256" TopLine="229"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="615" Column="99" TopLine="597"/>
</Position16>
<Position17>
- <Filename Value="epost.lpr"/>
- <Caret Line="397" Column="34" TopLine="368"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="3407" Column="32" TopLine="3381"/>
</Position17>
<Position18>
- <Filename Value="epost.lpr"/>
- <Caret Line="414" Column="80" TopLine="391"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="3411" Column="14" TopLine="3388"/>
</Position18>
<Position19>
- <Filename Value="epost.lpr"/>
- <Caret Line="183" TopLine="158"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="3410" Column="25" TopLine="3393"/>
</Position19>
<Position20>
- <Filename Value="epost.lpr"/>
- <Caret Line="370" Column="113" TopLine="363"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="1893" Column="45" TopLine="1871"/>
</Position20>
<Position21>
- <Filename Value="epost.lpr"/>
- <Caret Line="437" Column="32" TopLine="409"/>
+ <Filename Value="werteunit.pas"/>
+ <Caret Line="1874" Column="16" TopLine="1856"/>
</Position21>
<Position22>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="99" Column="35" TopLine="78"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="6133" Column="19" TopLine="6119"/>
</Position22>
<Position23>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="27" Column="17" TopLine="9"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4381" Column="37" TopLine="4363"/>
</Position23>
<Position24>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="26" Column="18" TopLine="9"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4410" Column="69" TopLine="4393"/>
</Position24>
<Position25>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="27" Column="18" TopLine="9"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4485" Column="23" TopLine="4468"/>
</Position25>
<Position26>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="73" Column="6" TopLine="44"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="6122" Column="25" TopLine="6117"/>
</Position26>
<Position27>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="88" Column="8" TopLine="59"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="189" Column="25" TopLine="173"/>
</Position27>
<Position28>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="99" Column="21" TopLine="70"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="4489" Column="15" TopLine="4468"/>
</Position28>
<Position29>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="124" Column="27" TopLine="95"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="130" Column="23" TopLine="114"/>
</Position29>
<Position30>
- <Filename Value="epost.lpr"/>
- <Caret Line="184" Column="67" TopLine="164"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="131" Column="23" TopLine="114"/>
</Position30>
</JumpHistory>
</ProjectSession>
diff --git a/epostunit.pas b/epostunit.pas
index 8df3e7a..243ea9c 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -186,6 +186,7 @@ type
procedure fuelleMitDummys(sT: boolean);
procedure verschiebe(threads: longint; richtung: tInt64Point);
procedure ermittlePhasenWinkel(threads: longint);
+ procedure entspringe(threads: longint; entspringen: tEntspringModus);
procedure fft2dNachbearbeitung(threads: longint; nB: tFFTDatenordnung);
procedure schreibeWert(var f: textfile; p: tExtPoint; var letzterWert: extended; entspringen: extended; skalierung: string); inline;
function exprToFloat(sT: boolean; s: string): extended;
@@ -424,6 +425,13 @@ type
constructor create(werte: tWerte; xMin,xMax: longint);
procedure stExecute; override;
end;
+ tEntspringThread = class(tLogThread)
+ we: tWerte;
+ mi,ma: longint;
+ em: tEntspringModus;
+ constructor create(werte: tWerte; min,max: longint; entspringModus: tEntspringModus);
+ procedure stExecute; override;
+ end;
tKomplexMachThread = class(tLogThread)
we: tWerte;
xMi,xMa: longint;
@@ -4352,6 +4360,7 @@ var
fensters: array[boolean] of tSin2Fenster;
s: string;
b: boolean;
+ entspringen: tEntspringModus;
bekannteBefehle: tMyStringList;
maxPos: tInt64Point;
betraege: tWerte;
@@ -4368,10 +4377,13 @@ begin
end;
xFak:=1;
yFak:=1;
+ entspringen.modus:=emKein;
+ setLength(entspringen.parameter,0);
bekannteBefehle:=tMyStringList.create;
repeat
if not f.metaReadln(s,true) then begin
gibAus('Unerwartetes Dateiende!',3);
+ bekannteBefehle.free;
for b:=false to true do
fensters[b].free;
exit;
@@ -4394,9 +4406,20 @@ begin
yFak:=kont2diskFak('t',exprToFloat(sT,s));
continue;
end;
+ if istDasBefehl('entspringen:',s,bekannteBefehle,true) then begin
+ if not strToTEntspringModus(s,sT,knownValues,@callBackGetValue,entspringen) then begin
+ bekannteBefehle.free;
+ for b:=false to true do
+ fensters[b].free;
+ exit;
+ end;
+ continue;
+ end;
bekannteBefehle.sort;
gibAus('Verstehe Option '''+s+''' nicht beim Extrahieren der Phase!'#10'Ich kenne:'#10+bekannteBefehle.text,3);
bekannteBefehle.free;
+ for b:=false to true do
+ fensters[b].free;
exit;
until false;
bekannteBefehle.free;
@@ -4459,6 +4482,19 @@ begin
gibAus('Phasenwinkel ermitteln ...',3);
ermittlePhasenWinkel(threads);
+ if entspringen.modus<>emKein then begin
+ case entspringen.modus of
+ emHorizontal:
+ entspringen.parameter[0]:=
+ kont2disk('x',entspringen.parameter[0]);
+ emVertikal:
+ entspringen.parameter[0]:=
+ kont2disk('y',entspringen.parameter[0]);
+ end{of case};
+ gibAus('entsrpingen ...',3);
+ entspringe(threads,entspringen);
+ end;
+
gibAus('... fertig '+timetostr(now-Zeit),3);
result:=true;
end;
@@ -6091,6 +6127,46 @@ begin
holeRAM(3);
end;
+procedure tWerte.entspringe(threads: longint; entspringen: tEntspringModus);
+var
+ entspringThreads: array of tEntspringThread;
+ i,dim: longint;
+ fertig: boolean;
+begin
+ case entspringen.modus of
+ emKein: // nichts zu tun
+ exit;
+ emHorizontal:
+ dim:=_tSiz;
+ emVertikal:
+ dim:=_xSteps;
+ else
+ fehler('Entspringmodus '''+tEntspringModusToStr(entspringen)+''' ist (noch) nicht implementiert!');
+ end{of case};
+
+ if dim<threads then
+ threads:=dim;
+
+ setLength(entspringThreads,threads);
+ for i:=0 to threads-1 do
+ entspringThreads[i]:=
+ tEntspringThread.create(
+ self,
+ round(i/threads*dim),
+ round((i+1)/threads*dim-1),
+ entspringen
+ );
+ repeat
+ sleep(10);
+ fertig:=true;
+ for i:=0 to length(entspringThreads)-1 do
+ fertig:=fertig and entspringThreads[i].fertig;
+ until fertig;
+ for i:=0 to length(entspringThreads)-1 do
+ entspringThreads[i].free;
+ gibAus('Alle Entspringthreads fertig!',1);
+end;
+
procedure tWerte.fft2dNachbearbeitung(threads: longint; nB: tFFTDatenordnung);
var
i: longint;
@@ -8114,6 +8190,33 @@ begin
gibAus('PhasenWinkelThread beendet',1);
end;
+// tEntspringThread ************************************************************
+
+constructor tEntspringThread.create(werte: tWerte; min,max: longint; entspringModus: tEntspringModus);
+begin
+ inherited create;
+ we:=werte;
+ mi:=min;
+ ma:=max;
+ em:=entspringModus;
+ gibAus('EntspringThread erzeugt: '+intToStr(mi)+'-'+intToStr(ma)+' '+tEntspringModusToStr(em),1);
+ suspended:=false;
+end;
+
+procedure tEntspringThread.stExecute;
+begin
+ gibAus('EntspringThread gestartet',1);
+ case we.genauigkeit of
+ gSingle:
+ we.sWerte.entspringe(mi,ma,em);
+ gDouble:
+ we.dWerte.entspringe(mi,ma,em);
+ gExtended:
+ we.eWerte.entspringe(mi,ma,em);
+ end{of case};
+ gibAus('EntspringThread beendet',1);
+end;
+
// tKomplexMachThread **********************************************************
constructor tKomplexMachThread.create(werte: tWerte; xMin,xMax: longint; komplexMachModus: tKomplexMachModus; randomSeed: longword);
diff --git a/typenunit.pas b/typenunit.pas
index 0ea6cac..05e9c1d 100644
--- a/typenunit.pas
+++ b/typenunit.pas
@@ -21,6 +21,11 @@ type
parameter: tExtendedArray;
end;
tIntegrationsRichtung = (irHorizontal,irEinfall,irAusfall);
+ tLowLevelEntspringModus = (emKein,emHorizontal,emVertikal);
+ tEntspringModus = record
+ modus: tLowLevelEntspringModus;
+ parameter: tExtendedArray;
+ end;
tGenerischeInputDateiInfo = class // nur zum Vererben gedacht, nie selbst instanziieren!
name,fehlerBehebungsKommando: string;
gamma,groeszenFaktor,
@@ -607,6 +612,8 @@ procedure zerstoereTransformationWennObsolet(tr: tTransformation);
function dreheLagePositiv(l: tLage): tLage; inline;
function stringToTHintergrundAbzugsArt(s: string; sT: boolean; kvs: tKnownValues; cbgv: tCallBackGetValue; out hintergrundAbzugsArt: tHintergrundAbzugsArt): boolean;
function tHintergrundAbzugsArtToStr(hintergrundAbzugsArt: tHintergrundAbzugsArt): string;
+function strToTEntspringModus(s: string; sT: boolean; kvs: tKnownValues; cbgv: tCallBackGetValue; out entspringModus: tEntspringModus): boolean;
+function tEntspringModusToStr(entspringModus: tEntspringModus): string;
const
paralleleRichtung: array[tLage] of char = ('y','x','y','x');
@@ -3379,5 +3386,49 @@ begin
end{of case};
end;
+function strToTEntspringModus(s: string; sT: boolean; kvs: tKnownValues; cbgv: tCallBackGetValue; out entspringModus: tEntspringModus): boolean;
+var
+ bekannteModi: tMyStringList;
+begin
+ bekannteModi:=tMyStringList.create;
+ result:=true;
+ if istDasBefehl('kein',s,bekannteModi,false) then begin
+ entspringModus.modus:=emKein;
+ setLength(entspringModus.parameter,0);
+ end
+ else if istDasBefehl('horizontal',s,bekannteModi,true) then begin
+ entspringModus.modus:=emHorizontal;
+ setLength(entspringModus.parameter,1);
+ entspringModus.parameter[0]:=exprToFloat(sT,s,kvs,cbgv);
+ end
+ else if istDasBefehl('vertikal',s,bekannteModi,true) then begin
+ entspringModus.modus:=emVertikal;
+ setLength(entspringModus.parameter,1);
+ entspringModus.parameter[0]:=exprToFloat(sT,s,kvs,cbgv);
+ end
+ else begin
+ entspringModus.modus:=emKein;
+ setLength(entspringModus.parameter,0);
+ result:=false;
+ bekannteModi.sort;
+ gibAus('Unbekannter Entspringmodus '''+s+''' - ich kenne nur:'#10+bekannteModi.text,3);
+ end;
+ bekannteModi.free;
+end;
+
+function tEntspringModusToStr(entspringModus: tEntspringModus): string;
+begin
+ case entspringModus.modus of
+ emKein:
+ result:='kein';
+ emHorizontal:
+ result:='horizontal '+myFloatToStr(entspringModus.parameter[0]);
+ emVertikal:
+ result:='vertikal '+myFloatToStr(entspringModus.parameter[0]);
+ else
+ result:='UNBEKANNT';
+ end{of case};
+end;
+
end.
diff --git a/werteunit.pas b/werteunit.pas
index fdbad97..5d4ec0c 100644
--- a/werteunit.pas
+++ b/werteunit.pas
@@ -83,6 +83,7 @@ type
procedure verschiebe(richtung: tInt64Point; xV,xB,tV,tB: longint);
procedure ermittlePhasenWinkel(xMi,xMa: longint);
procedure macheKomplex(tMi,tMa: int64; kmm: tKomplexMachModus; mT: tMersenneTwister);
+ procedure entspringe(mi,ma: int64; em: tEntspringModus);
procedure entferneHeiszePixel(schwelle,minusSchwelle,plusSchwelle: extended);
procedure quotioent(dend: pTLLWerteSingle; sor: pTLLWerteSingle; xMi,xMa,xOf,tMi,tMa,tOf: int64; eps: extended); overload;
procedure quotioent(dend: pTLLWerteSingle; sor: pTLLWerteDouble; xMi,xMa,xOf,tMi,tMa,tOf: int64; eps: extended); overload;
@@ -1865,6 +1866,49 @@ begin
end{of case};
end;
+procedure tLLWerte.entspringe(mi,ma: int64; em: tEntspringModus);
+var
+ i,j,pStep,sStep,pMax,jStart: int64;
+ wert: extended;
+begin
+ case em.modus of
+ emKein:
+ exit;
+ emHorizontal: begin
+ pStep:=1;
+ sStep:=params.xSteps;
+ pMax:=params.xSteps-1;
+ end;
+ emVertikal: begin
+ pStep:=params.xSteps;
+ sStep:=1;
+ pMax:=params.tSiz-1;
+ end;
+ else
+ fehler('Entspringmodus '''+tEntspringModusToStr(em)+''' nicht implementiert!');
+ end{of case};
+ assert(em.modus in [emHorizontal,emVertikal],'Hoppla, der Entspringmodus '''+tEntspringModusToStr(em)+''' ist doch noch nicht implementiert!');
+ jStart:=max(0,min(pMax,round(em.parameter[0])));
+ for i:=mi to ma do begin // senkrecht
+ wert:=0;
+ for j:=jStart to pMax do begin // parallel, nach rechts
+ while werte[i*sStep+j*pStep]-wert >= pi do
+ werte[i*sStep+j*pStep]:=werte[i*sStep+j*pStep]-2*pi;
+ while werte[i*sStep+j*pStep]-wert < -pi do
+ werte[i*sStep+j*pStep]:=werte[i*sStep+j*pStep]+2*pi;
+ wert:=werte[i*sStep+j*pStep];
+ end;
+ wert:=werte[i*sStep+jStart*pStep];
+ for j:=jStart-1 downto 0 do begin // parallel, nach links
+ while werte[i*sStep+j*pStep]-wert >= pi do
+ werte[i*sStep+j*pStep]:=werte[i*sStep+j*pStep]-2*pi;
+ while werte[i*sStep+j*pStep]-wert < -pi do
+ werte[i*sStep+j*pStep]:=werte[i*sStep+j*pStep]+2*pi;
+ wert:=werte[i*sStep+j*pStep];
+ end;
+ end;
+end;
+
procedure tLLWerte.entferneHeiszePixel(schwelle,minusSchwelle,plusSchwelle: extended);
var
i,j,iM,jM,iP,jP,mCnt: int64;