summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2019-09-26 16:10:30 +0200
committerErich Eckner <git@eckner.net>2019-09-26 16:10:30 +0200
commit047e7f0f160c469c7a3a719c4c006bdcedc5b45b (patch)
treed906ffca0d779a9d59ff690726c3827aff5aa44e
parent65985a7e2d782fe4f12d79e66b17f0b109472a72 (diff)
downloadepost-047e7f0f160c469c7a3a719c4c006bdcedc5b45b.tar.xz
typenunit: tAK2dTransformation neu
-rw-r--r--epost.lps123
-rw-r--r--epostunit.pas15
-rw-r--r--typenunit.pas102
3 files changed, 166 insertions, 74 deletions
diff --git a/epost.lps b/epost.lps
index f321f4a..6608b5e 100644
--- a/epost.lps
+++ b/epost.lps
@@ -22,9 +22,10 @@
<Unit2>
<Filename Value="epostunit.pas"/>
<IsPartOfProject Value="True"/>
+ <IsVisibleTab Value="True"/>
<EditorIndex Value="2"/>
- <TopLine Value="748"/>
- <CursorPos X="13" Y="769"/>
+ <TopLine Value="5847"/>
+ <CursorPos Y="5864"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit2>
@@ -41,6 +42,8 @@
<Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="10"/>
+ <TopLine Value="2599"/>
+ <CursorPos X="11" Y="2616"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit4>
@@ -71,7 +74,6 @@
<Unit8>
<Filename Value="werteunit.inc"/>
<IsPartOfProject Value="True"/>
- <IsVisibleTab Value="True"/>
<EditorIndex Value="6"/>
<TopLine Value="19"/>
<CursorPos X="65" Y="32"/>
@@ -84,7 +86,7 @@
<EditorIndex Value="7"/>
<TopLine Value="86"/>
<CursorPos X="26" Y="115"/>
- <UsageCount Value="56"/>
+ <UsageCount Value="57"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
@@ -92,7 +94,7 @@
<IsPartOfProject Value="True"/>
<EditorIndex Value="8"/>
<CursorPos X="3" Y="2"/>
- <UsageCount Value="52"/>
+ <UsageCount Value="53"/>
<Loaded Value="True"/>
</Unit10>
<Unit11>
@@ -209,121 +211,122 @@
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
- <Filename Value="epostunit.pas"/>
- <Caret Line="551" Column="30" TopLine="522"/>
+ <Filename Value="typenunit.pas"/>
</Position1>
<Position2>
- <Filename Value="epostunit.pas"/>
- <Caret Line="756" Column="28" TopLine="727"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="280" Column="18" TopLine="251"/>
</Position2>
<Position3>
- <Filename Value="epostunit.pas"/>
- <Caret Line="758" Column="13" TopLine="729"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="283" Column="65" TopLine="254"/>
</Position3>
<Position4>
- <Filename Value="epostunit.pas"/>
- <Caret Line="761" Column="28" TopLine="732"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="284" Column="52" TopLine="255"/>
</Position4>
<Position5>
- <Filename Value="epostunit.pas"/>
- <Caret Line="767" Column="33" TopLine="738"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="299" Column="47" TopLine="270"/>
</Position5>
<Position6>
- <Filename Value="epostunit.pas"/>
- <Caret Line="768" Column="33" TopLine="739"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="301" Column="50" TopLine="272"/>
</Position6>
<Position7>
- <Filename Value="epostunit.pas"/>
- <Caret Line="769" Column="33" TopLine="740"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="302" Column="18" TopLine="294"/>
</Position7>
<Position8>
- <Filename Value="epostunit.pas"/>
- <Caret Line="3318" Column="35" TopLine="3290"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="358" Column="55" TopLine="330"/>
</Position8>
<Position9>
- <Filename Value="epostunit.pas"/>
- <Caret Line="3319" Column="35" TopLine="3291"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="359" Column="52" TopLine="331"/>
</Position9>
<Position10>
- <Filename Value="epostunit.pas"/>
- <Caret Line="3320" Column="35" TopLine="3292"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="360" Column="55" TopLine="332"/>
</Position10>
<Position11>
- <Filename Value="epostunit.pas"/>
- <Caret Line="10209" Column="22" TopLine="10181"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="361" Column="52" TopLine="333"/>
</Position11>
<Position12>
- <Filename Value="epostunit.pas"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="364" Column="52" TopLine="336"/>
</Position12>
<Position13>
- <Filename Value="epostunit.pas"/>
- <Caret Line="39" Column="25" TopLine="10"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="365" Column="51" TopLine="337"/>
</Position13>
<Position14>
- <Filename Value="epostunit.pas"/>
- <Caret Line="152" Column="25" TopLine="124"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="433" Column="21" TopLine="426"/>
</Position14>
<Position15>
<Filename Value="epostunit.pas"/>
- <Caret Line="153" Column="25" TopLine="125"/>
+ <Caret Line="5907" TopLine="5893"/>
</Position15>
<Position16>
- <Filename Value="epostunit.pas"/>
- <Caret Line="539" Column="13" TopLine="510"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2542" TopLine="2522"/>
</Position16>
<Position17>
- <Filename Value="epostunit.pas"/>
- <Caret Line="551" Column="30" TopLine="522"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2550" TopLine="2526"/>
</Position17>
<Position18>
- <Filename Value="werteunit.pas"/>
- <Caret Line="1404" Column="27" TopLine="1384"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2556" Column="17" TopLine="2541"/>
</Position18>
<Position19>
- <Filename Value="werteunit.inc"/>
- <Caret Line="515" TopLine="480"/>
+ <Filename Value="typenunit.pas"/>
</Position19>
<Position20>
<Filename Value="typenunit.pas"/>
- <Caret Line="2839" Column="26" TopLine="2812"/>
+ <Caret Line="458" Column="34" TopLine="440"/>
</Position20>
<Position21>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="1213" Column="106" TopLine="1194"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2539" Column="11" TopLine="2522"/>
</Position21>
<Position22>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="33" Column="24" TopLine="15"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2550" Column="16" TopLine="2531"/>
</Position22>
<Position23>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="84" Column="14" TopLine="70"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2567" TopLine="2547"/>
</Position23>
<Position24>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="98" Column="14" TopLine="70"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2577" TopLine="2542"/>
</Position24>
<Position25>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="111" Column="27" TopLine="82"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="456" Column="22" TopLine="443"/>
</Position25>
<Position26>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="220" Column="33" TopLine="197"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2582" Column="26" TopLine="2566"/>
</Position26>
<Position27>
- <Filename Value="../units/matheunit.pas"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2568" TopLine="2549"/>
</Position27>
<Position28>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="33" Column="24" TopLine="4"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2586" Column="3" TopLine="2566"/>
</Position28>
<Position29>
- <Filename Value="../units/matheunit.pas"/>
- <Caret Line="203" Column="94" TopLine="187"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2610" Column="3" TopLine="2585"/>
</Position29>
<Position30>
- <Filename Value="../units/matheunit.pas"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2616" Column="11" TopLine="2599"/>
</Position30>
</JumpHistory>
<RunParams>
diff --git a/epostunit.pas b/epostunit.pas
index c0cdad3..8a24fda 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -5861,7 +5861,6 @@ var
i: longint;
s: string;
b,fertig: boolean;
- c: char;
fftRichtungen: array[boolean] of char;
gespiegelt: array[boolean] of boolean;
bekannteBefehle: tMyStringList;
@@ -5900,22 +5899,10 @@ begin
until false;
bekannteBefehle.free;
- transformationen:=tGroeszenVerdopplungsTransformation.create(transformationen,true,true);
+ transformationen:=tAK2dTransformation.create(transformationen,gespiegelt[false],gespiegelt[true]);
_xSteps:=_xSteps*2;
_tSiz:=_tSiz*2;
- transformationen:=tLineareAchsenVerzerrTransformation.create(transformationen);
- for c:='x' to 'y' do
- with transformationen as tLineareAchsenVerzerrTransformation do
- if gespiegelt[c<>'x'] then begin
- offset[c]:=-achsen[c,'x'];
- fak[c]:=0.5;
- end
- else begin
- offset[c]:=-(achsen[c,'y']+achsen[c,'x'])/2;
- fak[c]:=1;
- end;
-
if sT then begin
result:=true;
exit;
diff --git a/typenunit.pas b/typenunit.pas
index a9722fb..a6e6fb8 100644
--- a/typenunit.pas
+++ b/typenunit.pas
@@ -453,6 +453,18 @@ type
function positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; override;
function dumpParams: string; override;
end;
+ tAK2dTransformation = class (tKoordinatenTransformation)
+ // repräsentiert die Transformation der Koordinaten bei einer 2d-Autokorrelation
+ spiegeln: array['x'..'y'] of boolean;
+ constructor create; overload;
+ constructor create(vorg: tTransformation; hoS,veS: boolean);
+ procedure aktualisiereAchsen; override;
+ procedure aktualisiereXsTs; override;
+ // keine Änderung der Positionen, der Werte(skalierung), der Ausdehnung
+ function wertZuPositionAufAchse(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; override;
+ function positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; override;
+ function dumpParams: string; override;
+ end;
tSpiegelungsTransformation = class (tKoordinatenTransformation)
// repräsentiert die horizontale Spiegelung der Koordinaten
constructor create;
@@ -2521,6 +2533,95 @@ begin
result:=result + ' ' + inherited dumpParams;
end;
+// tFFTTransformation **********************************************************
+
+constructor tAK2dTransformation.create;
+var
+ c: char;
+begin
+ inherited create;
+ for c:='x' to 'y' do
+ spiegeln[c]:=false;
+end;
+
+constructor tAK2dTransformation.create(vorg: tTransformation; hoS,veS: boolean);
+begin
+ inherited create;
+ spiegeln['x']:=hoS;
+ spiegeln['y']:=veS;
+ fuegeVorgaengerHinzu(vorg);
+end;
+
+procedure tAK2dTransformation.aktualisiereAchsen;
+var
+ c: char;
+begin
+ for c:='x' to 'y' do
+ if spiegeln[c] then begin
+ outAchsen[c,'x']:=0;
+ outAchsen[c,'y']:=inAchsen[c,'y']-inAchsen[c,'x'];
+ end
+ else begin
+ outAchsen[c,'x']:=inAchsen[c,'x']-inAchsen[c,'y'];
+ outAchsen[c,'y']:=inAchsen[c,'y']-inAchsen[c,'x'];
+ end;
+end;
+
+procedure tAK2dTransformation.aktualisiereXsTs;
+var
+ c: char;
+begin
+ for c:='x' to 'y' do
+ outXSTS[c]:=2*inXSTS[c];
+end;
+
+function tAK2dTransformation.wertZuPositionAufAchse(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
+var
+ c: char;
+begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(false,false,l,x);
+ // egal, wie die Werte vor der AK aussahen, wir setzen sie danach linear
+ c:=paralleleRichtung[l];
+ if x=outAchsen[c,'x'] then
+ result:=0
+ else
+ result:=(x-outAchsen[c,'x'])/(outAchsen[c,'y']-outAchsen[c,'x']);
+
+ result:=result*(1-1/outXSTS[c]);
+
+ if auszerhalbIstFehler then
+ testeAuszerhalb(false,true,l,result);
+end;
+
+function tAK2dTransformation.positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
+var
+ c: char;
+begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(false,true,l,x);
+ // egal, wie die Werte vor der AK aussahen, wir setzen die Frequenzen danach linear
+ c:=paralleleRichtung[l];
+ if x=0 then
+ result:=outAchsen[c,'x']
+ else
+ result:=x/(1-1/outXSTS[c])*(outAchsen[c,'y']-outAchsen[c,'x'])+outAchsen[c,'x'];
+
+ if auszerhalbIstFehler then
+ testeAuszerhalb(false,false,l,result);
+end;
+
+function tAK2dTransformation.dumpParams: string;
+var
+ c: char;
+begin
+ result:='AK: ';
+ for c:='x' to 'y' do
+ if spiegeln[c] then
+ result:=result+c;
+ result:=result + ' ' + inherited dumpParams;
+end;
+
// tSpiegelungsTransformation **************************************************
constructor tSpiegelungsTransformation.create;
@@ -2837,6 +2938,7 @@ begin
offset[c]:=0;
end;
fuegeVorgaengerHinzu(vg);
+ aktualisiereAchsen;
end;
function tLineareAchsenVerzerrTransformation.dumpParams: string;