summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epost.lps238
-rw-r--r--epostunit.pas36
-rw-r--r--typenunit.pas75
-rw-r--r--werteunit.pas28
4 files changed, 199 insertions, 178 deletions
diff --git a/epost.lps b/epost.lps
index dab3f64..56dc453 100644
--- a/epost.lps
+++ b/epost.lps
@@ -3,12 +3,12 @@
<ProjectSession>
<Version Value="10"/>
<BuildModes Active="Default"/>
- <Units Count="29">
+ <Units Count="27">
<Unit0>
<Filename Value="epost.lpr"/>
<IsPartOfProject Value="True"/>
- <TopLine Value="471"/>
- <CursorPos X="14" Y="497"/>
+ <TopLine Value="172"/>
+ <CursorPos X="15" Y="201"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit0>
@@ -22,10 +22,9 @@
<Unit2>
<Filename Value="epostunit.pas"/>
<IsPartOfProject Value="True"/>
- <IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="5383"/>
- <CursorPos X="23" Y="5401"/>
+ <TopLine Value="158"/>
+ <CursorPos X="27" Y="186"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit2>
@@ -40,17 +39,18 @@
<Filename Value="werteunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="8"/>
- <TopLine Value="1729"/>
- <CursorPos X="16" Y="1760"/>
+ <TopLine Value="47"/>
+ <CursorPos X="61" Y="64"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
+ <IsVisibleTab Value="True"/>
<EditorIndex Value="11"/>
- <TopLine Value="1869"/>
- <CursorPos X="55" Y="1891"/>
+ <TopLine Value="1954"/>
+ <CursorPos Y="1987"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit5>
@@ -77,7 +77,7 @@
<IsPartOfProject Value="True"/>
<EditorIndex Value="10"/>
<CursorPos X="35" Y="10"/>
- <UsageCount Value="165"/>
+ <UsageCount Value="175"/>
<Loaded Value="True"/>
</Unit8>
<Unit9>
@@ -86,264 +86,252 @@
<EditorIndex Value="9"/>
<TopLine Value="382"/>
<CursorPos X="59" Y="417"/>
- <UsageCount Value="52"/>
+ <UsageCount Value="62"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
- <Filename Value="../fpGUI/src/corelib/render/software/agg_scanline_storage_aa.pas"/>
- <EditorIndex Value="-1"/>
- <TopLine Value="1612"/>
- <CursorPos X="2" Y="1675"/>
- <UsageCount Value="1"/>
- </Unit10>
- <Unit11>
<Filename Value="../units/mystringlistunit.pas"/>
<EditorIndex Value="7"/>
<TopLine Value="198"/>
<CursorPos X="19" Y="226"/>
- <UsageCount Value="27"/>
+ <UsageCount Value="32"/>
<Loaded Value="True"/>
- </Unit11>
- <Unit12>
+ </Unit10>
+ <Unit11>
<Filename Value="../units/lowlevelunit.pas"/>
<EditorIndex Value="6"/>
<TopLine Value="99"/>
<CursorPos Y="112"/>
<UsageCount Value="100"/>
<Loaded Value="True"/>
- </Unit12>
- <Unit13>
- <Filename Value="../units/randomunit.pas"/>
- <EditorIndex Value="-1"/>
- <UsageCount Value="1"/>
- </Unit13>
- <Unit14>
+ </Unit11>
+ <Unit12>
<Filename Value="../units/matheunit.pas"/>
<EditorIndex Value="5"/>
<TopLine Value="32"/>
<CursorPos X="46" Y="50"/>
- <UsageCount Value="86"/>
+ <UsageCount Value="91"/>
<Loaded Value="True"/>
- </Unit14>
- <Unit15>
+ </Unit12>
+ <Unit13>
<Filename Value="../units/systemunit.pas"/>
<EditorIndex Value="2"/>
<TopLine Value="126"/>
<CursorPos X="7" Y="147"/>
- <UsageCount Value="41"/>
+ <UsageCount Value="46"/>
<Loaded Value="True"/>
- </Unit15>
- <Unit16>
+ </Unit13>
+ <Unit14>
<Filename Value="/usr/lib/fpc/src/rtl/inc/objpash.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="182"/>
<CursorPos X="21" Y="202"/>
- <UsageCount Value="4"/>
- </Unit16>
- <Unit17>
+ <UsageCount Value="3"/>
+ </Unit14>
+ <Unit15>
<Filename Value="/usr/lib/fpc/src/rtl/unix/bunxovlh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="61"/>
<CursorPos X="10" Y="99"/>
- <UsageCount Value="2"/>
- </Unit17>
- <Unit18>
+ <UsageCount Value="1"/>
+ </Unit15>
+ <Unit16>
<Filename Value="/usr/lib/fpc/src/rtl/unix/baseunix.pp"/>
<UnitName Value="BaseUnix"/>
<EditorIndex Value="-1"/>
<TopLine Value="61"/>
- <UsageCount Value="2"/>
- </Unit18>
- <Unit19>
+ <UsageCount Value="1"/>
+ </Unit16>
+ <Unit17>
<Filename Value="/usr/lib/fpc/src/rtl/unix/bunxovl.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="414"/>
<CursorPos X="20" Y="434"/>
- <UsageCount Value="2"/>
- </Unit19>
- <Unit20>
+ <UsageCount Value="1"/>
+ </Unit17>
+ <Unit18>
<Filename Value="/usr/lib/fpc/src/rtl/linux/bunxsysc.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="16"/>
- <UsageCount Value="2"/>
- </Unit20>
- <Unit21>
+ <UsageCount Value="1"/>
+ </Unit18>
+ <Unit19>
<Filename Value="/usr/lib/fpc/src/rtl/unix/bunxh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="74"/>
<CursorPos X="15" Y="102"/>
- <UsageCount Value="2"/>
- </Unit21>
- <Unit22>
+ <UsageCount Value="1"/>
+ </Unit19>
+ <Unit20>
<Filename Value="/usr/lib/fpc/src/packages/fcl-image/src/fpimage.pp"/>
<UnitName Value="FPimage"/>
<EditorIndex Value="-1"/>
<TopLine Value="10"/>
<CursorPos X="3" Y="30"/>
- <UsageCount Value="2"/>
- </Unit22>
- <Unit23>
+ <UsageCount Value="1"/>
+ </Unit20>
+ <Unit21>
<Filename Value="../fpGUI/src/corelib/render/software/agg_basics.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="327"/>
<CursorPos X="12" Y="347"/>
- <UsageCount Value="5"/>
- </Unit23>
- <Unit24>
+ <UsageCount Value="4"/>
+ </Unit21>
+ <Unit22>
<Filename Value="/usr/lib/fpc/src/rtl/objpas/classes/classesh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="673"/>
<CursorPos X="42" Y="705"/>
- <UsageCount Value="5"/>
- </Unit24>
- <Unit25>
+ <UsageCount Value="4"/>
+ </Unit22>
+ <Unit23>
<Filename Value="/usr/lib/fpc/src/rtl/objpas/math.pp"/>
<EditorIndex Value="-1"/>
<TopLine Value="166"/>
<CursorPos X="10" Y="183"/>
- <UsageCount Value="3"/>
- </Unit25>
- <Unit26>
+ <UsageCount Value="2"/>
+ </Unit23>
+ <Unit24>
<Filename Value="GTIWebServerTestAggActionHandlerUnit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="53"/>
<CursorPos X="49" Y="82"/>
- <UsageCount Value="3"/>
- </Unit26>
- <Unit27>
+ <UsageCount Value="2"/>
+ </Unit24>
+ <Unit25>
<Filename Value="/usr/lib/fpc/src/rtl/objpas/sysutils/sysstrh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="204"/>
<CursorPos X="18" Y="222"/>
- <UsageCount Value="5"/>
- </Unit27>
- <Unit28>
+ <UsageCount Value="4"/>
+ </Unit25>
+ <Unit26>
<Filename Value="/usr/lib/fpc/src/rtl/objpas/sysutils/osutilsh.inc"/>
<EditorIndex Value="-1"/>
<TopLine Value="9"/>
<CursorPos X="10" Y="26"/>
- <UsageCount Value="5"/>
- </Unit28>
+ <UsageCount Value="4"/>
+ </Unit26>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
- <Filename Value="typenunit.pas"/>
- <Caret Line="1522" Column="29" TopLine="1504"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5362" Column="20" TopLine="5334"/>
</Position1>
<Position2>
- <Filename Value="typenunit.pas"/>
- <Caret Line="454" Column="25" TopLine="436"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5365" Column="20" TopLine="5337"/>
</Position2>
<Position3>
- <Filename Value="typenunit.pas"/>
- <Caret Line="2492" Column="52" TopLine="2484"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5370" Column="18" TopLine="5342"/>
</Position3>
<Position4>
- <Filename Value="typenunit.pas"/>
- <Caret Line="338" Column="36" TopLine="322"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5372" Column="18" TopLine="5344"/>
</Position4>
<Position5>
- <Filename Value="typenunit.pas"/>
- <Caret Line="380" Column="36" TopLine="351"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5374" Column="18" TopLine="5346"/>
</Position5>
<Position6>
- <Filename Value="typenunit.pas"/>
- <Caret Line="403" Column="36" TopLine="374"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5864" Column="14" TopLine="5836"/>
</Position6>
<Position7>
- <Filename Value="typenunit.pas"/>
- <Caret Line="446" Column="36" TopLine="417"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5870" Column="14" TopLine="5842"/>
</Position7>
<Position8>
<Filename Value="typenunit.pas"/>
- <Caret Line="475" Column="36" TopLine="446"/>
+ <Caret Line="340" TopLine="324"/>
</Position8>
<Position9>
<Filename Value="typenunit.pas"/>
- <Caret Line="493" Column="36" TopLine="464"/>
+ <Caret Line="1882" Column="30" TopLine="1853"/>
</Position9>
<Position10>
<Filename Value="typenunit.pas"/>
- <Caret Line="506" Column="36" TopLine="477"/>
+ <Caret Line="1903" Column="30" TopLine="1874"/>
</Position10>
<Position11>
<Filename Value="typenunit.pas"/>
- <Caret Line="1870" Column="48" TopLine="1841"/>
+ <Caret Line="1910" Column="30" TopLine="1881"/>
</Position11>
<Position12>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2043" Column="38" TopLine="2021"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1933" Column="30" TopLine="1904"/>
</Position12>
<Position13>
- <Filename Value="epostunit.pas"/>
- <Caret Line="3143" Column="90" TopLine="3124"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1979" Column="31" TopLine="1950"/>
</Position13>
<Position14>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2447" Column="47" TopLine="2427"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1988" Column="31" TopLine="1959"/>
</Position14>
<Position15>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2517" Column="24" TopLine="2488"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1994" Column="31" TopLine="1965"/>
</Position15>
<Position16>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2516" Column="17" TopLine="2516"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2001" Column="31" TopLine="1972"/>
</Position16>
<Position17>
- <Filename Value="epostunit.pas"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2067" Column="29" TopLine="2038"/>
</Position17>
<Position18>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2441" Column="47" TopLine="2419"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2082" Column="29" TopLine="2053"/>
</Position18>
<Position19>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2447" Column="46" TopLine="2419"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2088" Column="29" TopLine="2059"/>
</Position19>
<Position20>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2516" Column="25" TopLine="2488"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2099" Column="29" TopLine="2070"/>
</Position20>
<Position21>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2686" Column="28" TopLine="2657"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2411" Column="45" TopLine="2382"/>
</Position21>
<Position22>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2694" Column="28" TopLine="2671"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2418" TopLine="2389"/>
</Position22>
<Position23>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2702" Column="28" TopLine="2673"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2421" Column="45" TopLine="2392"/>
</Position23>
<Position24>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2773" Column="24" TopLine="2744"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2428" TopLine="2399"/>
</Position24>
<Position25>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2898" Column="24" TopLine="2869"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2614" Column="30" TopLine="2585"/>
</Position25>
<Position26>
- <Filename Value="epostunit.pas"/>
- <Caret Line="3143" Column="44" TopLine="3114"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2740" Column="35" TopLine="2711"/>
</Position26>
<Position27>
<Filename Value="epostunit.pas"/>
- <Caret Line="4493" TopLine="4464"/>
+ <Caret Line="5859" Column="50" TopLine="5848"/>
</Position27>
<Position28>
<Filename Value="epostunit.pas"/>
- <Caret Line="5048" Column="31" TopLine="5019"/>
+ <Caret Line="5461" Column="29" TopLine="5435"/>
</Position28>
<Position29>
<Filename Value="epostunit.pas"/>
- <Caret Line="177" Column="28" TopLine="161"/>
</Position29>
<Position30>
- <Filename Value="epostunit.pas"/>
- <Caret Line="5401" Column="11" TopLine="5320"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="2826" Column="56" TopLine="2797"/>
</Position30>
</JumpHistory>
</ProjectSession>
diff --git a/epostunit.pas b/epostunit.pas
index e69c4cc..d59d222 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -131,7 +131,8 @@ type
function kont2disk(dir: char; x: extended): longint; overload;
function kont2diskFak(senkrecht: boolean; x: extended): extended; overload; inline;
function kont2diskFak(dir: char; x: extended): extended; overload;
- function disk2kont(dir: char; x: longint): extended;
+ function disk2kont(dir: char; x: extended): extended; overload; inline;
+ 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);
@@ -573,10 +574,10 @@ begin
else if (s='tMax') or (s='tStop') then result:=wertes^[i].transformationen.tStop
else if (s='wMin') or (s='minW') then result:=wertes^[i]._minW
else if (s='wMax') or (s='maxW') then result:=wertes^[i]._maxW
- else if (s='pMinX') or (s='minPX') then result:=wertes^[i].disk2kontFak('x',wertes^[i]._minP['x'])
- else if (s='pMaxX') or (s='maxPX') then result:=wertes^[i].disk2kontFak('x',wertes^[i]._maxP['x'])
- else if (s='pMinT') or (s='minPT') or (s='pMinY') or (s='minPY') then result:=wertes^[i].disk2kontFak('y',wertes^[i]._minP['y'])
- else if (s='pMaxT') or (s='maxPT') or (s='pMaxY') or (s='maxPY') then result:=wertes^[i].disk2kontFak('y',wertes^[i]._maxP['y'])
+ else if (s='pMinX') or (s='minPX') then result:=wertes^[i].disk2kont('x',wertes^[i]._minP['x'])
+ else if (s='pMaxX') or (s='maxPX') then result:=wertes^[i].disk2kont('x',wertes^[i]._maxP['x'])
+ else if (s='pMinT') or (s='minPT') or (s='pMinY') or (s='minPY') then result:=wertes^[i].disk2kont('y',wertes^[i]._minP['y'])
+ else if (s='pMaxT') or (s='maxPT') or (s='pMaxY') or (s='maxPY') then result:=wertes^[i].disk2kont('y',wertes^[i]._maxP['y'])
else if s='np' then result:=wertes^[i]._np
else if (s='beta') or (s='β') then result:=wertes^[i]._beta
else if s='Breite' then result:=wertes^[i].transformationen.xStart-wertes^[i].transformationen.xStop
@@ -2060,18 +2061,26 @@ begin
end;
end;
-function tWerte.disk2kont(dir: char; x: longint): extended;
+function tWerte.disk2kont(dir: char; x: extended): extended;
begin
case dir of
'x':
- result:=transformationen.positionAufAchseZuWert(lOben,x,false);
+ result:=transformationen.positionAufAchseZuWert(lOben,x/(_xSteps-1),false);
'y','t':
- result:=transformationen.positionAufAchseZuWert(lLinks,x,false);
+ result:=transformationen.positionAufAchseZuWert(lLinks,x/(_tSiz-1),false);
else
result:=nan;
end;
end;
+function tWerte.disk2kont(x: tExtPoint): tExtPoint;
+begin
+ result:=extPoint(
+ disk2kont('x',x['x']),
+ disk2kont('y',x['y'])
+ );
+end;
+
function tWerte.disk2kontFak(senkrecht: boolean; x: longint): extended;
begin
result:=disk2kontFak(char(ord('x')+byte(senkrecht)),x);
@@ -3129,10 +3138,7 @@ begin
bekannteBefehle.clear;
if istDasBefehl('Ende',s,bekannteBefehle,false) then break;
if istDasBefehl('xMin:',s,bekannteBefehle,true) then begin
- writeln(s);
xMin:=kont2disk('x',exprToFloat(sT,s));
- writeln(xMin);
- writeln;
continue;
end;
if istDasBefehl('xMax:',s,bekannteBefehle,true) then begin
@@ -4733,8 +4739,6 @@ begin
if istKomplex xor (dos[4] in [doAlleResIms, doAlleResSmi]) then begin
gibAus('Eine 2d-FFT gibt genau dann alle Real- und Imaginärteile aus, wenn die Eingabe komplex ist!',3);
- writeln(istKomplex);
- writeln(dos[4]);
exit;
end;
@@ -5549,9 +5553,9 @@ end;
procedure tWerte.schreibeWert(var f: textfile; x,y: longint);
begin
case genauigkeit of
- gSingle: sWerte.schreibeWert(f,x,y);
- gDouble: dWerte.schreibeWert(f,x,y);
- gExtended: eWerte.schreibeWert(f,x,y);
+ 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)));
end{of Case};
end;
diff --git a/typenunit.pas b/typenunit.pas
index 8c25fca..52a05d6 100644
--- a/typenunit.pas
+++ b/typenunit.pas
@@ -288,7 +288,7 @@ type
procedure aktualisiereWmia; virtual;
function transformiereKoordinatenEinzeln(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; virtual;
- function transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; virtual;
+ function transformiereKoordinatenEinzelnInvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; virtual;
// wie ändert sich die Position eines Punktes (Paradebeispiel: bei Spiegelung: x -> xSteps-1-x)
// ist für p veranwortlich?
// und die inverse Funktion
@@ -335,6 +335,7 @@ type
// wie lauten xStart,xStop,tStart,tStop?
function transformiereKoordinaten(const p: tExtPoint; const tiefe: longint = -1): tExtPoint; overload;
function transformiereKoordinaten(const x,y: longint; const tiefe: longint = -1): tExtPoint; overload;
+ function transformiereKoordinatenInvers(const p: tExtPoint; const tiefe: longint = -1): tExtPoint;
function wertZuPositionAufAchse(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; virtual;
function positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; virtual;
function transformiereWert(const x: extended; const tiefe: longint = -1): extended;
@@ -409,7 +410,7 @@ type
constructor create;
constructor create(vorg: tTransformation);
function transformiereKoordinatenEinzeln(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
- function transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
+ function transformiereKoordinatenEinzelnInvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
// keine Änderung der Achsenbegrenzungen, der Werte(skalierung), der Ausdehnung
function dumpParams: string; override;
end;
@@ -427,7 +428,7 @@ type
expFak: tExtPoint; // Vorfaktoren der Exponentialfunktionen
constructor create; overload;
function transformiereKoordinatenEinzeln(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
- function transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
+ function transformiereKoordinatenEinzelnInvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
function initAbbildung(syntaxTest: boolean; s: string; xScale,yScale: extended; etf: tExprToFloat): boolean;
function zielausdehnung: t2x2Longint;
procedure aktualisiereXsTs; override;
@@ -447,7 +448,7 @@ type
function positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; override;
procedure aktualisiereAchsen; override;
function transformiereKoordinatenEinzeln(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
- function transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
+ function transformiereKoordinatenEinzelnInvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
// keine Änderung der Werte(skalierung), der Ausdehnung
function dumpParams: string; override;
end;
@@ -458,7 +459,7 @@ type
procedure aktualisiereXsTs; override;
procedure aktualisiereAchsen; override;
function transformiereKoordinatenEinzeln(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
- function transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
+ function transformiereKoordinatenEinzelnInvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint; override;
// keine Änderung der Werte(skalierung)
function dumpParams: string; override;
end;
@@ -1842,7 +1843,7 @@ begin
testeAuszerhalb(p);
end;
-function tTransformation.transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
+function tTransformation.transformiereKoordinatenEinzelnInvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
begin
result:=p;
if auszerhalbIstFehler then
@@ -1867,11 +1868,21 @@ begin
result:=transformiereKoordinaten(p,tiefe);
end;
+function tTransformation.transformiereKoordinatenInvers(const p: tExtPoint; const tiefe: longint = -1): tExtPoint;
+begin
+ result:=transformiereKoordinatenEinzelnInvers(p);
+ if (length(vorgaenger)>0) and (tiefe<>0) then
+ result:=vorgaenger[0].transformiereKoordinaten(result,tiefe-1);
+end;
+
function tTransformation.wertZuPositionAufAchse(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
var
c,d: char;
p: tExtPoint;
begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,x);
+
// das generische Verhalten ist
c:=paralleleRichtung[l];
d:=senkrechteRichtung[l];
@@ -1888,7 +1899,8 @@ begin
p:=transformiereKoordinatenEinzeln(p,auszerhalbIstFehler);
// und in Anteile zurückzurechnen
- result:=p[c]/outXSTS[c];
+ result:=p[c]/(outXSTS[c]-1);
+
end;
function tTransformation.positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
@@ -1906,16 +1918,18 @@ begin
// in Koordinaten umrechnen
for d:='x' to 'y' do
- p[d]:=p[d] * (inXSTS[d]-1);
+ p[d]:=p[d] * (outXSTS[d]-1);
// transformieren
- p:=transformiereKoordinatenEinzelnIvers(p,auszerhalbIstFehler);
+ p:=transformiereKoordinatenEinzelnInvers(p,auszerhalbIstFehler);
// und in Anteile zurückrechnen
- p[c]:=p[c]/outXSTS[c];
+ p[c]:=p[c]/(inXSTS[c]-1);
// und vom Vorgänger weiter berechnen lassen
- result:=vorgaenger[0].positionAufAchseZuWert(l,p[c],auszerhalbIstFehler)
+ result:=vorgaenger[0].positionAufAchseZuWert(l,p[c],auszerhalbIstFehler);
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,result);
end;
function tTransformation.transformiereWertEinzeln(const x: extended): extended;
@@ -1976,14 +1990,15 @@ function tKeineTransformation.positionAufAchseZuWert(const l: tLage; x: extended
var
c: char;
begin
- if auszerhalbIstFehler then
- testeAuszerhalb(l,x);
// ein Wert am Anfang ist einfach linear zu interpolieren
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(l,result);
end;
// tIdentitaet *****************************************************************
@@ -2057,7 +2072,7 @@ begin
// egal, wie die Werte vor der FFT aussahen, wir setzen die Frequenzen danach linear
c:=paralleleRichtung[l];
if x=outAchsen[c,'x'] then
- result:=0
+ result:=0
else
result:=(x-outAchsen[c,'x'])/(outAchsen[c,'y']-outAchsen[c,'x']);
@@ -2069,8 +2084,6 @@ function tFFTTransformation.positionAufAchseZuWert(const l: tLage; x: extended;
var
c: char;
begin
- if auszerhalbIstFehler then
- testeAuszerhalb(l,x);
if ((l in [lOben,lUnten]) and not horizontal) or // untransformierte Achse?
((not (l in [lOben,lUnten])) and not vertikal) then
result:=inherited positionAufAchseZuWert(l,x,auszerhalbIstFehler) // Vorfahren befragen
@@ -2082,6 +2095,8 @@ begin
else
result:=x/(1-1/outXSTS[c])*(outAchsen[c,'y']-outAchsen[c,'x'])+outAchsen[c,'x'];
end;
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,result);
end;
function tFFTTransformation.dumpParams: string;
@@ -2112,7 +2127,7 @@ begin
result['y']:=p['y'];
end;
-function tSpiegelungsTransformation.transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
+function tSpiegelungsTransformation.transformiereKoordinatenEinzelnInvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
begin
if auszerhalbIstFehler then
testeAuszerhalb(p);
@@ -2219,11 +2234,11 @@ begin
end;
end;
-function tKonkreteKoordinatenTransformation.transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
+function tKonkreteKoordinatenTransformation.transformiereKoordinatenEinzelnInvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
begin
if auszerhalbIstFehler then
testeAuszerhalb(p);
- fehler('tKonkreteKoordinatenTransformation: transformiereKoordinatenEinzelnIvers kann es nicht geben, weil transformiereKoordinatenEinzeln nicht umkehrbar sein muss!');
+ fehler('tKonkreteKoordinatenTransformation: transformiereKoordinatenEinzelnInvers kann es nicht geben, weil transformiereKoordinatenEinzeln nicht umkehrbar sein muss!');
result:=extPoint(0,0);
end;
@@ -2392,18 +2407,22 @@ end;
function tLambdaZuOmegaTransformation.wertZuPositionAufAchse(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,x);
if ((l in [lOben,lUnten]) and horizontal) or // transformierte Achse?
((l in [lLinks,lRechts]) and vertikal) then
x:=_faktor/x;
- result:=vorgaenger[0].wertZuPositionAufAchse(l,x,auszerhalbIstFehler); // Vorfahren befragen
+ result:=vorgaenger[0].wertZuPositionAufAchse(l,x,auszerhalbIstFehler); // Vorgaenger befragen
end;
function tLambdaZuOmegaTransformation.positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
begin
+ result:=vorgaenger[0].positionAufAchseZuWert(l,x,auszerhalbIstFehler); // Vorfahren befragen
if ((l in [lOben,lUnten]) and horizontal) or // transformierte Achse?
((l in [lLinks,lRechts]) and vertikal) then
- x:=_faktor/x;
- result:=vorgaenger[0].positionAufAchseZuWert(l,x,auszerhalbIstFehler); // Vorfahren befragen
+ result:=_faktor/result;
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,result);
end;
procedure tLambdaZuOmegaTransformation.aktualisiereAchsen;
@@ -2450,7 +2469,7 @@ begin
result['y']:=p['y'];
end;
-function tLambdaZuOmegaTransformation.transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
+function tLambdaZuOmegaTransformation.transformiereKoordinatenEinzelnInvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
var
verh: extended;
begin
@@ -2539,7 +2558,7 @@ begin
result[c]:=max(0,min(outXSTS[c],p[c]-gr[c,'x']));
end;
-function tKoordinatenAusschnitt.transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
+function tKoordinatenAusschnitt.transformiereKoordinatenEinzelnInvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
var
c: char;
begin
@@ -2591,6 +2610,8 @@ end;
function tFitTransformation.wertZuPositionAufAchse(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,x);
if (l in [lOben,lUnten]) xor _senkrecht then
result:=0 // keine Ausdehnung in dieser Richtung!
else
@@ -2603,6 +2624,8 @@ begin
fehler('Eine fit-Transformation hat keine Ausdehnung in dieser Richtung!')
else
result:=vorgaenger[0].positionAufAchseZuWert(l,x,auszerhalbIstFehler);
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,result);
end;
function tFitTransformation.dumpParams: string;
@@ -2738,7 +2761,7 @@ end;
function tAgglomeration.positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
begin
- if auszerhalbIstFehler then
+ if auszerhalbIstFehler then // intentionally wrong!
testeAuszerhalb(l,x);
fehler('tAgglomeration: positionAufAchseZuWert ist noch nicht implementiert');
result:=0;
@@ -2807,7 +2830,7 @@ end;
function tDiagonaleAgglomeration.positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
begin
- if auszerhalbIstFehler then
+ if auszerhalbIstFehler then // intentionally wrong
testeAuszerhalb(l,x);
fehler('tDiagonaleAgglomeration: positionAufAchseZuWert ist noch nicht implementiert!');
result:=0;
diff --git a/werteunit.pas b/werteunit.pas
index 05c3687..0e65ed2 100644
--- a/werteunit.pas
+++ b/werteunit.pas
@@ -59,8 +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); overload;
- procedure schreibeWert(var f: textfile; x,y,wert: extended); overload;
+ 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; xBeschr,yBeschr,wert: extended); overload; inline;
procedure schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean);
procedure erzeugeBinning(senkrecht,linien: boolean; x0,dx: extended; s: string);
procedure holeRAM; inline; overload;
@@ -868,24 +869,29 @@ begin
result:=not (in0 or out0);
end;
-procedure tLLWerte.schreibeWert(var f: textfile; x,y: longint);
+procedure tLLWerte.schreibeWert(var f: textfile; x,y: longint; beschriftung: tExtPoint);
begin
- schreibeWert(f,x,y,werte[x+y*params.xSteps]);
+ schreibeWert(f,beschriftung['x'],beschriftung['y'],werte[x+y*params.xSteps]);
end;
-procedure tLLWerte.schreibeWert(var f: textfile; x,y,wert: extended);
+procedure tLLWerte.schreibeWert(var f: textfile; x,y: longint);
var
- xa,ta: extended;
+ pkt: tExtPoint;
begin
if params.xStop=params.xStart then
- xa:=params.xStop
+ pkt['x']:=params.xStop
else
- xa:=params.xStart+x/(params.xSteps-1)*(params.xStop-params.xStart);
+ pkt['x']:=params.xStart+x/(params.xSteps-1)*(params.xStop-params.xStart);
if params.tStop=params.tStart then
- ta:=params.tStop
+ pkt['y']:=params.tStop
else
- ta:=params.tStart+y/(params.tSiz-1)*(params.tStop-params.tStart);
- writeln(f,floatToStr(xa)+' '+floatToStr(ta)+' '+floatToStr(wert));
+ pkt['y']:=params.tStart+y/(params.tSiz-1)*(params.tStop-params.tStart);
+ schreibeWert(f,x,y,pkt);
+end;
+
+procedure tLLWerte.schreibeWert(var f: textfile; xBeschr,yBeschr,wert: extended);
+begin
+ writeln(f,myFloatToStr(xBeschr)+' '+myFloatToStr(yBeschr)+' '+myFloatToStr(wert));
end;
procedure tLLWerte.schreibeWertIntegriert(var f: textfile; i: longint; hor: boolean);