diff options
author | Erich Eckner <git@eckner.net> | 2019-09-26 16:10:30 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2019-09-26 16:10:30 +0200 |
commit | 047e7f0f160c469c7a3a719c4c006bdcedc5b45b (patch) | |
tree | d906ffca0d779a9d59ff690726c3827aff5aa44e | |
parent | 65985a7e2d782fe4f12d79e66b17f0b109472a72 (diff) | |
download | epost-047e7f0f160c469c7a3a719c4c006bdcedc5b45b.tar.xz |
typenunit: tAK2dTransformation neu
-rw-r--r-- | epost.lps | 123 | ||||
-rw-r--r-- | epostunit.pas | 15 | ||||
-rw-r--r-- | typenunit.pas | 102 |
3 files changed, 166 insertions, 74 deletions
@@ -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; |