summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epost.lps148
-rw-r--r--epostunit.pas91
-rw-r--r--typenunit.pas653
-rw-r--r--werteunit.pas9
4 files changed, 207 insertions, 694 deletions
diff --git a/epost.lps b/epost.lps
index d60b270..7c2492d 100644
--- a/epost.lps
+++ b/epost.lps
@@ -7,7 +7,8 @@
<Unit0>
<Filename Value="epost.lpr"/>
<IsPartOfProject Value="True"/>
- <CursorPos X="3" Y="26"/>
+ <TopLine Value="173"/>
+ <CursorPos Y="193"/>
<UsageCount Value="202"/>
<Loaded Value="True"/>
</Unit0>
@@ -21,9 +22,10 @@
<Unit2>
<Filename Value="epostunit.pas"/>
<IsPartOfProject Value="True"/>
+ <IsVisibleTab Value="True"/>
<EditorIndex Value="1"/>
- <TopLine Value="788"/>
- <CursorPos X="3" Y="809"/>
+ <TopLine Value="400"/>
+ <CursorPos X="20" Y="426"/>
<UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit2>
@@ -38,18 +40,17 @@
<Filename Value="werteunit.pas"/>
<IsPartOfProject Value="True"/>
<EditorIndex Value="2"/>
- <TopLine Value="152"/>
- <CursorPos X="3" Y="173"/>
+ <TopLine Value="3"/>
+ <CursorPos X="5" Y="24"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="typenunit.pas"/>
<IsPartOfProject Value="True"/>
- <IsVisibleTab Value="True"/>
<EditorIndex Value="3"/>
- <TopLine Value="1980"/>
- <CursorPos X="3" Y="2001"/>
+ <TopLine Value="400"/>
+ <CursorPos Y="420"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit5>
@@ -58,26 +59,26 @@
<EditorIndex Value="-1"/>
<TopLine Value="1612"/>
<CursorPos X="2" Y="1675"/>
- <UsageCount Value="6"/>
+ <UsageCount Value="5"/>
</Unit6>
<Unit7>
<Filename Value="../units/mystringlistunit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="356"/>
<CursorPos X="43" Y="378"/>
- <UsageCount Value="18"/>
+ <UsageCount Value="17"/>
</Unit7>
<Unit8>
<Filename Value="../units/lowlevelunit.pas"/>
<EditorIndex Value="-1"/>
- <TopLine Value="23"/>
- <CursorPos X="51" Y="44"/>
+ <TopLine Value="20"/>
+ <CursorPos Y="40"/>
<UsageCount Value="27"/>
</Unit8>
<Unit9>
<Filename Value="../units/randomunit.pas"/>
<EditorIndex Value="-1"/>
- <UsageCount Value="6"/>
+ <UsageCount Value="5"/>
</Unit9>
<Unit10>
<Filename Value="../units/matheunit.pas"/>
@@ -85,150 +86,149 @@
<TopLine Value="544"/>
<CursorPos X="53" Y="567"/>
<FoldState Value=" T3q50{m012A"/>
- <UsageCount Value="18"/>
+ <UsageCount Value="17"/>
</Unit10>
<Unit11>
<Filename Value="../units/systemunit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="65"/>
<CursorPos X="26" Y="80"/>
- <UsageCount Value="19"/>
+ <UsageCount Value="18"/>
</Unit11>
<Unit12>
<Filename Value="../fpGUI/src/corelib/render/software/agg_2D.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="807"/>
<CursorPos Y="818"/>
- <UsageCount Value="9"/>
+ <UsageCount Value="8"/>
</Unit12>
<Unit13>
<Filename Value="../units/protokollunit.pas"/>
<EditorIndex Value="-1"/>
<TopLine Value="82"/>
<CursorPos X="15" Y="30"/>
- <UsageCount Value="9"/>
+ <UsageCount Value="8"/>
</Unit13>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
- <Filename Value="epostunit.pas"/>
- <Caret Line="6035" Column="3" TopLine="5949"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1794" Column="19" TopLine="1761"/>
</Position1>
<Position2>
- <Filename Value="epostunit.pas"/>
- <Caret Line="6041" TopLine="6021"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1834" Column="36" TopLine="1812"/>
</Position2>
<Position3>
- <Filename Value="epostunit.pas"/>
- <Caret Line="5452" Column="3" TopLine="5444"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="277" Column="43" TopLine="265"/>
</Position3>
<Position4>
- <Filename Value="epostunit.pas"/>
- <Caret Line="5342" Column="3" TopLine="5320"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1828" Column="96" TopLine="1816"/>
</Position4>
<Position5>
- <Filename Value="epostunit.pas"/>
- <Caret Line="5165" Column="3" TopLine="5141"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1130" Column="40" TopLine="1110"/>
</Position5>
<Position6>
- <Filename Value="epostunit.pas"/>
- <Caret Line="5108" Column="3" TopLine="5084"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="365" Column="17" TopLine="345"/>
</Position6>
<Position7>
- <Filename Value="epostunit.pas"/>
- <Caret Line="5073" Column="3" TopLine="5050"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1221" Column="29" TopLine="1188"/>
</Position7>
<Position8>
- <Filename Value="epostunit.pas"/>
- <Caret Line="4504" Column="10" TopLine="4487"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1238" Column="29" TopLine="1205"/>
</Position8>
<Position9>
- <Filename Value="epostunit.pas"/>
- <Caret Line="4307" Column="3" TopLine="4286"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1831" Column="42" TopLine="1812"/>
</Position9>
<Position10>
- <Filename Value="epostunit.pas"/>
- <Caret Line="4099" Column="3" TopLine="4077"/>
+ <Filename Value="typenunit.pas"/>
</Position10>
<Position11>
- <Filename Value="epostunit.pas"/>
- <Caret Line="4013" Column="3" TopLine="3991"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="252" Column="21" TopLine="220"/>
</Position11>
<Position12>
- <Filename Value="epostunit.pas"/>
- <Caret Line="4011" TopLine="3991"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="299" Column="19" TopLine="267"/>
</Position12>
<Position13>
<Filename Value="typenunit.pas"/>
- <Caret Line="863" Column="3" TopLine="842"/>
+ <Caret Line="1248" Column="33" TopLine="1215"/>
</Position13>
<Position14>
- <Filename Value="epostunit.pas"/>
- <Caret Line="3834" Column="128" TopLine="3828"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="365" Column="17" TopLine="345"/>
</Position14>
<Position15>
- <Filename Value="epostunit.pas"/>
- <Caret Line="3166" Column="3" TopLine="3132"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1221" Column="29" TopLine="1188"/>
</Position15>
<Position16>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2860" Column="3" TopLine="2836"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1238" Column="29" TopLine="1205"/>
</Position16>
<Position17>
<Filename Value="epostunit.pas"/>
- <Caret Line="2727" Column="3" TopLine="2706"/>
+ <Caret Line="1959" Column="29" TopLine="1934"/>
</Position17>
<Position18>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2410" Column="3" TopLine="2386"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="370" Column="16" TopLine="350"/>
</Position18>
<Position19>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2368" Column="3" TopLine="2344"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="312" Column="28" TopLine="292"/>
</Position19>
<Position20>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2197" Column="3" TopLine="2167"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="370" Column="28" TopLine="337"/>
</Position20>
<Position21>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2105" Column="3" TopLine="2080"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1453" Column="39" TopLine="1420"/>
</Position21>
<Position22>
- <Filename Value="epostunit.pas"/>
- <Caret Line="2012" Column="3" TopLine="1987"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1844" Column="38" TopLine="1809"/>
</Position22>
<Position23>
- <Filename Value="epostunit.pas"/>
- <Caret Line="1718" Column="3" TopLine="1692"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="355" Column="25" TopLine="335"/>
</Position23>
<Position24>
- <Filename Value="epostunit.pas"/>
- <Caret Line="1584" Column="3" TopLine="1560"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1764" Column="50" TopLine="1746"/>
</Position24>
<Position25>
- <Filename Value="epostunit.pas"/>
- <Caret Line="1525" Column="3" TopLine="1507"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="217" Column="3" TopLine="197"/>
</Position25>
<Position26>
- <Filename Value="epostunit.pas"/>
- <Caret Line="1370" Column="3" TopLine="1356"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="355" Column="25" TopLine="322"/>
</Position26>
<Position27>
- <Filename Value="epostunit.pas"/>
- <Caret Line="1036" Column="3" TopLine="1006"/>
+ <Filename Value="typenunit.pas"/>
+ <Caret Line="1800" Column="29" TopLine="1779"/>
</Position27>
<Position28>
- <Filename Value="typenunit.pas"/>
- <Caret Line="413" Column="5" TopLine="393"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="1955" TopLine="1934"/>
</Position28>
<Position29>
<Filename Value="typenunit.pas"/>
- <Caret Line="2136" Column="3" TopLine="2084"/>
+ <Caret Line="1100" Column="122" TopLine="1088"/>
</Position29>
<Position30>
- <Filename Value="typenunit.pas"/>
- <Caret Line="200" TopLine="180"/>
+ <Filename Value="epostunit.pas"/>
+ <Caret Line="5390" TopLine="5361"/>
</Position30>
</JumpHistory>
</ProjectSession>
diff --git a/epostunit.pas b/epostunit.pas
index 81bdaf7..144bfb7 100644
--- a/epostunit.pas
+++ b/epostunit.pas
@@ -420,6 +420,10 @@ begin
eWerte.params.free;
gibAus('Die Werteparameter sind verschieden instaziiert!!!',3);
end;
+ if dWerte.params<>sWerte.params then begin
+ dWerte.params.free;
+ gibAus('Die Werteparameter sind verschieden instaziiert!!!',3);
+ end;
sWerte.params.free;
eWerte.free;
dWerte.free;
@@ -1838,8 +1842,7 @@ var
i,xmin,xmax,tmin,tmax: longint;
quellen: tWerteArray;
s: string;
- Zeit,schritt: extended;
- horizontal: boolean;
+ Zeit: extended;
pSi: pTLLWerteSingle;
pDo: pTLLWerteDouble;
pEx: pTLLWerteExtended;
@@ -1855,8 +1858,11 @@ begin
tmin:=-1;
tmax:=-1;
Zeit:=now;
- schritt:=-1;
- horizontal:=false;
+ if not Transformationen.hatNachfolger then
+ Transformationen.free;
+ Transformationen:=tAgglomeration.create;
+ (Transformationen as tAgglomeration).schritt:=-1;
+ (Transformationen as tAgglomeration).horizontal:=false;
repeat
if not f.metaReadln(s,true) then begin
gibAus('Unerwartetes Dateiende!',3);
@@ -1864,36 +1870,36 @@ begin
end;
if s='Ende' then break;
if startetMit('xmin:',s) then begin
- xmin:=kont2disk('x',exprtofloat(st,s));
+ xmin:=quellen[0].kont2disk('x',exprtofloat(st,s));
continue;
end;
if startetMit('xmax:',s) then begin
- xmax:=kont2disk('x',exprtofloat(st,s));
+ xmax:=quellen[0].kont2disk('x',exprtofloat(st,s));
continue;
end;
if startetMit('tmin:',s) then begin
- tmin:=kont2disk('t',exprtofloat(st,s));
+ tmin:=quellen[0].kont2disk('t',exprtofloat(st,s));
continue;
end;
if startetMit('tmax:',s) then begin
- tmax:=kont2disk('t',exprtofloat(st,s));
+ tmax:=quellen[0].kont2disk('t',exprtofloat(st,s));
continue;
end;
if startetMit('Schritt:',s) then begin
- schritt:=exprtofloat(st,s);
+ (Transformationen as tAgglomeration).schritt:=exprtofloat(st,s);
continue;
end;
if s='horizontal' then begin
- horizontal:=true;
+ (Transformationen as tAgglomeration).horizontal:=true;
continue;
end;
if s='vertikal' then begin
- horizontal:=true;
+ (Transformationen as tAgglomeration).horizontal:=true;
continue;
end;
setlength(quellen,length(quellen)+1);
i:=findeWerte(erstesArgument(s),nil,wertes,Konturen,false);
- if i<0 then
+ if (i<0) or (wertes^[i]=self) then
exit;
quellen[length(quellen)-1]:=wertes^[i];
if length(quellen)=1 then begin
@@ -1934,17 +1940,12 @@ begin
if xmin<0 then
xmin:=0;
if xmax<0 then
- xmax:=quellen[0]._xsteps-1;
+ xmax:=quellen[0].Transformationen.xsteps-1;
if tmin<0 then
tmin:=0;
if tmax<0 then
- tmax:=quellen[0]._tsiz-1;
+ tmax:=quellen[0].Transformationen.tsiz-1;
- if not Transformationen.hatNachfolger then
- Transformationen.free;
- Transformationen:=tAgglomeration.create;
- (Transformationen as tAgglomeration).horizontal:=horizontal;
- (Transformationen as tAgglomeration).schritt:=schritt;
for i:=0 to length(quellen)-1 do
(Transformationen as tAgglomeration).addKomponente(
tKoordinatenAusschnitt.create(
@@ -1955,12 +1956,8 @@ begin
_xsteps:=Transformationen.xsteps;
_tsiz:=Transformationen.tsiz;
- _minW:=quellen[0]._minW;
- _maxW:=quellen[0]._maxW;
- for i:=1 to length(quellen)-1 do begin
- _minW:=min(_minW,quellen[i]._minW);
- _maxW:=max(_maxW,quellen[i]._maxW);
- end;
+ _minW:=Transformationen.wmin;
+ _maxW:=Transformationen.wmax;
_np:=quellen[0]._np;
_beta:=quellen[0]._beta;
@@ -1980,8 +1977,8 @@ begin
pSi,
xmin,xmax,
tmin,tmax,
- (1+xmax-xmin)*i*byte(horizontal),
- (1+tmax-tmin)*i*byte(not horizontal)
+ (1+xmax-xmin)*i*byte((Transformationen as tAgglomeration).horizontal),
+ (1+tmax-tmin)*i*byte(not (Transformationen as tAgglomeration).horizontal)
);
end;
gDouble: begin
@@ -1990,8 +1987,8 @@ begin
pDo,
xmin,xmax,
tmin,tmax,
- (1+xmax-xmin)*i*byte(horizontal),
- (1+tmax-tmin)*i*byte(not horizontal)
+ (1+xmax-xmin)*i*byte((Transformationen as tAgglomeration).horizontal),
+ (1+tmax-tmin)*i*byte(not (Transformationen as tAgglomeration).horizontal)
);
end;
gExtended: begin
@@ -2000,8 +1997,8 @@ begin
pEx,
xmin,xmax,
tmin,tmax,
- (1+xmax-xmin)*i*byte(horizontal),
- (1+tmax-tmin)*i*byte(not horizontal)
+ (1+xmax-xmin)*i*byte((Transformationen as tAgglomeration).horizontal),
+ (1+tmax-tmin)*i*byte(not (Transformationen as tAgglomeration).horizontal)
);
end;
end;
@@ -2655,22 +2652,7 @@ begin
(Transformationen as tAgglomeration).addKomponente(quelle.Transformationen);
(Transformationen as tAgglomeration).schritt:=(quelle.disk2kont('x',tmax)-quelle.disk2kont('x',tmin))*(1+1/(tmax-tmin));
end;
-(*
- Transformationen.xsteps:=_xsteps;
- Transformationen.tsiz:=_tsiz;
- if quelle._tsiz<>1 then begin
- Transformationen.xstart:=quelle.disk2kont('t',tmin); // quelle._tstart + tmin/(quelle._tsiz-1)*(quelle._tstop-quelle._tstart);
- Transformationen.xstop:= quelle.disk2kont('t',tmax); // quelle._tstart + tmax/(quelle._tsiz-1)*(quelle._tstop-quelle._tstart);
- Transformationen.tstart:=0;
- Transformationen.tstop:=quelle.disk2kontFak('t',_tsiz-1); // _tsiz/(quelle._tsiz-1)*(quelle._tstop-quelle._tstart);
- end
- else begin
- Transformationen.xstart:=quelle.disk2kont('x',tmin); // _xstart:=quelle._xstart + tmin/(quelle._xsteps-1)*(quelle._xstop-quelle._xstart);
- Transformationen.xstop:= quelle.disk2kont('x',tmax); // _xstop:= quelle._xstart + tmax/(quelle._xsteps-1)*(quelle._xstop-quelle._xstart);
- Transformationen.tstart:=0;
- Transformationen.tstop:=quelle.disk2kontFak('x',_tsiz-1); // _tstop:=_tsiz/(quelle._xsteps-1)*(quelle._xstop-quelle._xstart);
- end;
-*)
+
if not st then begin
tOf:=(_tsiz-Fenster.Breite) div 2;
eWerte.holeRam(3);
@@ -3422,21 +3404,6 @@ begin
setlength(Beschriftungen,0);
for i:=0 to length(Achsen)-1 do begin
-(* if Achsen[i].Lage in [lOben,lUnten] then
- begin
- maw:=xMax/(_xsteps-1)*(_xstop-_xstart)+_xstart;
- miw:=xMin/(_xsteps-1)*(_xstop-_xstart)+_xstart;
- end
- else
- begin
- maw:=tMax/(_tsiz-1)*(_tstop-_tstart)+_tstart;
- miw:=tMin/(_tsiz-1)*(_tstop-_tstart)+_tstart;
- end;
- schritt:=(maw-miw)/Achsen[i].Striche;
- j:=round(ln(schritt)/ln(10));
- schritt:=Achsen[i].faktor*power(10,j);
- wert:=ceil(miw/schritt)*schritt;
- while wert<=maw do *)
if Achsen[i].Lage in [lOben,lUnten] then begin
maw:=disk2kont('x',xMax);
miw:=disk2Kont('x',xMin);
diff --git a/typenunit.pas b/typenunit.pas
index 54c98cf..abb1753 100644
--- a/typenunit.pas
+++ b/typenunit.pas
@@ -221,13 +221,15 @@ type
vorgaenger,nachfolger: array of tTransformation;
in_xs_ts,out_xs_ts: tIntPoint;
in_achsen,out_achsen: t2x2Extended;
- out_wmia: tExtPoint;
+ in_wmia,out_wmia: tExtPoint;
wmiaExplizit: boolean;
procedure testeAuszerhalb(const p: tExtPoint);
- procedure aktualisiereAchsen; virtual; // nicht zum direkten Aufrufen
- procedure aktualisiereXsTs; virtual; // nicht zum direkten Aufrufen
- procedure aktualisiereWmia; virtual; // nicht zum direkten Aufrufen
+
+ procedure holeInfosVonVorgaengern; virtual;
+ procedure aktualisiereAchsen; virtual;
+ procedure aktualisiereXsTs; virtual;
+ procedure aktualisiereWmia; virtual;
function transformiereKoordinatenEinzeln(const p: tExtPoint): tExtPoint; virtual;
// wie ändert sich die Position eines Punktes (Paradebeispiel: bei Spiegelung: x -> xsteps-1-x)
@@ -272,6 +274,7 @@ type
function wertZuPositionAufAchse(const l: tLage; x: extended): extended; virtual;
function transformiereWert(const x: extended; const tiefe: longint = -1): extended;
property xsteps_tsiz: tIntPoint read out_xs_ts;
+ property wmia: tExtPoint read out_wmia;
function dumpParams: string; virtual; overload;
function dumpParams(tiefe: longint): string; overload;
property xstart: extended
@@ -301,9 +304,11 @@ type
end;
tKeineTransformation = class (tTransformation)
// der Beginn einer Transformationskette, z.B. das Laden von Daten
+ procedure holeInfosVonVorgaengern; override;
end;
tUeberlagerung = class (tTransformation)
// die Überlagerung mehrer gleichformatiger Daten, z.B. Linearkombination
+ constructor create;
procedure addKomponente(tr: tTransformation);
end;
tKoordinatenTransformation = class (tTransformation)
@@ -360,7 +365,8 @@ type
tAgglomeration = class (tKoordinatenTransformation)
schritt: extended;
horizontal: boolean;
- constructor create; overload;
+ constructor create;
+ procedure holeInfosVonVorgaengern; override;
procedure addKomponente(tr: tTransformation);
procedure aktualisiereXsTs; override;
procedure aktualisiereAchsen; override;
@@ -405,49 +411,6 @@ type
// keine Änderung der Achsenbegrenzungen, der Positionen, der Ausdehnung
function dumpParams: string; override;
end;
-(* tTransformationen = class
- private
- // merkt sich, was mit den Werten und Koordinaten nach einem festen Punkt (dem Einlesen) passiert ist,
- // sodass man immer nachvollziehen kann, welcher Punkt woher kam und wie verarbeitet wurde.
- // -> sinnvolle Achsenbezeichnungen und Legenden
- Schritte: array of tTransformation;
- _xtstao: t2x2Extended;
- _wmia: tExtPoint;
- _xs_ts: tIntPoint;
- function gibInhalt(ii: longint): tTransformation;
- procedure nimmInhalt(ii: longint; inh: tTransformation);
- function gibAchsen: t2x2Extended;
- procedure achsenUndGroeszeAktualisieren;
- public
- property inhalt[ii: longint]: tTransformation
- read gibInhalt
- write nimmInhalt; default;
- constructor create; overload;
- constructor create(original: tTransformationen); overload;
- destructor destroy; override;
- function kopiereVon(original: tTransformationen): boolean;
- function count: longint;
- function kCount: longint;
- function wCount: longint;
- function last: tTransformation;
- procedure clear;
- procedure clearWerte;
- procedure addFFT(hor,ver: boolean);
- procedure AddSpiegelung;
- function add(inh: tTransformation): boolean; overload;
- function add(st: boolean; s: string; f: tMyStringlist; etf: tExprToFloat): boolean; overload;
- function add(syntaxtest: boolean; s: string; xscale,yscale: extended; etf: tExprToFloat): boolean; overload;
- procedure addAusschnitt(xmin,xmax,tmin,tmax: longint);
- function addAgglomeration(horizontal: boolean; schritt: extended; anzahl: longint): boolean;
- function append(inhs: tTransformationen): boolean;
- function transformiereKoordinaten(const lage: tLage; const x: extended): extended; overload;
- function transformiereKoordinaten(const x,y: extended): tExtPoint; overload;
- function transformiereKoordinaten(const p: tExtPoint): tExtPoint; overload;
- function transformiereWert(const x: extended): extended;
- function dumpParams: string;
- procedure berechneZielausdehnung(out grenzen: t2x2Longint);
- end;
- tTransformationenArray = array of tTransformationen; *)
function liesTWerteTransformationen(st: boolean; s: string; f: tMyStringlist; etf: tExprToFloat; var tr: tTransformation): boolean;
@@ -1134,10 +1097,8 @@ begin
for i:=0 to length(vorgaenger)-1 do
vorgaenger[i].loescheNachfolger(self);
setlength(vorgaenger,0);
- if hatNachfolger then begin
- gibAus('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!',3);
- raise exception.create('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!');
- end;
+ if hatNachfolger then
+ fehler('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!');
inherited destroy;
end;
@@ -1147,10 +1108,8 @@ var
begin
for i:=0 to length(vorgaenger)-1 do
vorgaenger[i].loescheNachfolger(self);
- if hatNachfolger then begin
- gibAus('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!',3);
- raise exception.create('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!');
- end;
+ if hatNachfolger then
+ fehler('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!');
for i:=0 to length(vorgaenger)-1 do
vorgaenger[i].freeAll;
setlength(vorgaenger,0);
@@ -1160,22 +1119,44 @@ end;
procedure tTransformation.testeAuszerhalb(const p: tExtPoint);
begin
if (p['x']<0) or (p['x']>in_xs_ts['x']-1) or
- (p['y']<0) or (p['y']>in_xs_ts['y']-1) then begin
- gibAus('Punkt '+tExtPointToStr(p)+' liegt außerhalb des gültigen Eingabebereich (0..'+inttostr(in_xs_ts['x']-1)+' x 0..'+inttostr(in_xs_ts['y']-1)+')!',3);
- raise exception.create('Punkt '+tExtPointToStr(p)+' liegt außerhalb des gültigen Eingabebereich (0..'+inttostr(in_xs_ts['x']-1)+' x 0..'+inttostr(in_xs_ts['y']-1)+')!');
+ (p['y']<0) or (p['y']>in_xs_ts['y']-1) then
+ fehler('Punkt '+tExtPointToStr(p)+' liegt außerhalb des gültigen Eingabebereich (0..'+inttostr(in_xs_ts['x']-1)+' x 0..'+inttostr(in_xs_ts['y']-1)+')!');
+end;
+
+procedure tTransformation.holeInfosVonVorgaengern;
+var
+ i: longint;
+begin
+ in_achsen:=vorgaenger[0].achsen;
+ for i:=1 to length(vorgaenger)-1 do
+ if in_achsen <> vorgaenger[i].achsen then
+ fehler('Vorgänger haben verschiedene Achsen, was generisch nicht zu verstehen ist!');
+ in_xs_ts:=vorgaenger[0].xsteps_tsiz;
+ for i:=1 to length(vorgaenger)-1 do
+ if in_xs_ts <> vorgaenger[i].xsteps_tsiz then
+ fehler('Vorgänger haben verschiedene xsteps oder tsiz, was generisch nicht zu verstehen ist!');
+ if not wmiaExplizit then begin
+ in_wmia:=vorgaenger[0].wmia;
+ for i:=1 to length(vorgaenger)-1 do
+ if in_wmia <> vorgaenger[i].wmia then
+ fehler('Vorgänger haben verschiedene wmin oder wmax, was generisch nicht zu verstehen ist!');
end;
end;
procedure tTransformation.aktualisiereAchsen; // nicht zum direkten Aufrufen
begin
+ out_achsen:=in_achsen;
end;
procedure tTransformation.aktualisiereXsTs; // nicht zum direkten Aufrufen
begin
+ out_xs_ts:=in_xs_ts;
end;
procedure tTransformation.aktualisiereWmia; // nicht zum direkten Aufrufen
begin
+ if not wmiaExplizit then
+ out_wmia:=in_wmia;
end;
function tTransformation.rXstart: extended;
@@ -1185,10 +1166,8 @@ end;
procedure tTransformation.wXstart(x: extended);
begin
- if not (self is tKeineTransformation) then begin
- gibAus('Will xstart schreiben, aber bin nicht der Anfang einer Transformationskette!',3);
- raise exception.create('Will xstart schreiben, aber bin nicht der Anfang einer Transformationskette!');
- end;
+ if not (self is tKeineTransformation) then
+ fehler('Will xstart schreiben, aber bin nicht der Anfang einer Transformationskette!');
in_achsen['x','x']:=x;
aktualisiereAlles;
end;
@@ -1200,10 +1179,8 @@ end;
procedure tTransformation.wXstop(x: extended);
begin
- if not (self is tKeineTransformation) then begin
- gibAus('Will xstop schreiben, aber bin nicht der Anfang einer Transformationskette!',3);
- raise exception.create('Will xstop schreiben, aber bin nicht der Anfang einer Transformationskette!');
- end;
+ if not (self is tKeineTransformation) then
+ fehler('Will xstop schreiben, aber bin nicht der Anfang einer Transformationskette!');
in_achsen['x','y']:=x;
aktualisiereAlles;
end;
@@ -1215,10 +1192,8 @@ end;
procedure tTransformation.wTstart(t: extended);
begin
- if not (self is tKeineTransformation) then begin
- gibAus('Will tstart schreiben, aber bin nicht der Anfang einer Transformationskette!',3);
- raise exception.create('Will tstart schreiben, aber bin nicht der Anfang einer Transformationskette!');
- end;
+ if not (self is tKeineTransformation) then
+ fehler('Will tstart schreiben, aber bin nicht der Anfang einer Transformationskette!');
in_achsen['y','x']:=t;
aktualisiereAlles;
end;
@@ -1230,10 +1205,8 @@ end;
procedure tTransformation.wTstop(t: extended);
begin
- if not (self is tKeineTransformation) then begin
- gibAus('Will tstop schreiben, aber bin nicht der Anfang einer Transformationskette!',3);
- raise exception.create('Will tstop schreiben, aber bin nicht der Anfang einer Transformationskette!');
- end;
+ if not (self is tKeineTransformation) then
+ fehler('Will tstop schreiben, aber bin nicht der Anfang einer Transformationskette!');
in_achsen['y','y']:=t;
aktualisiereAlles;
end;
@@ -1245,6 +1218,11 @@ end;
procedure tTransformation.wWmin(w: extended);
begin
+ if (self is tAgglomeration) then begin
+ if out_wmia['x']<>w then
+ fehler('Setzen von wmin für Agglomeration nicht erlaubt ( '+floattostr(w)+' ≠ '+floattostr(out_wmia['x'])+' )!');
+ exit;
+ end;
out_wmia['x']:=w;
wmiaExplizit:=true;
aktualisiereAlles;
@@ -1257,8 +1235,14 @@ end;
procedure tTransformation.wWmax(w: extended);
begin
+ if (self is tAgglomeration) then begin
+ if out_wmia['y']<>w then
+ fehler('Setzen von wmax für Agglomeration nicht erlaubt ( '+floattostr(w)+' ≠ '+floattostr(out_wmia['y'])+' )!');
+ exit;
+ end;
wmiaExplizit:=true;
out_wmia['y']:=w;
+ aktualisiereAlles;
end;
function tTransformation.rXsteps: longint;
@@ -1268,11 +1252,10 @@ end;
procedure tTransformation.wXsteps(x: longint);
begin
- if not (self is tKeineTransformation) then begin
- gibAus('Will xsteps schreiben, aber bin nicht der Anfang einer Transformationskette!',3);
- raise exception.create('Will xsteps schreiben, aber bin nicht der Anfang einer Transformationskette!');
- end;
+ if not (self is tKeineTransformation) then
+ fehler('Will xsteps schreiben, aber bin nicht der Anfang einer Transformationskette!');
in_xs_ts['x']:=x;
+ aktualisiereAlles;
end;
function tTransformation.rTsiz: longint;
@@ -1282,11 +1265,10 @@ end;
procedure tTransformation.wTsiz(t: longint);
begin
- if not (self is tKeineTransformation) then begin
- gibAus('Will tsiz schreiben, aber bin nicht der Anfang einer Transformationskette!',3);
- raise exception.create('Will tsiz schreiben, aber bin nicht der Anfang einer Transformationskette!');
- end;
+ if not (self is tKeineTransformation) then
+ fehler('Will tsiz schreiben, aber bin nicht der Anfang einer Transformationskette!');
in_xs_ts['y']:=t;
+ aktualisiereAlles;
end;
procedure tTransformation.fuegeNachfolgerHinzu(tr: tTransformation);
@@ -1308,8 +1290,7 @@ begin
setlength(nachfolger,length(nachfolger)-1);
exit;
end;
- gibAus('Kann zu löschenden Nachfolger nicht finden!',3);
- raise exception.create('Kann zu löschenden Nachfolger nicht finden!');
+ fehler('Kann zu löschenden Nachfolger nicht finden!');
end;
procedure tTransformation.fuegeVorgaengerHinzu(tr: tTransformation);
@@ -1318,6 +1299,7 @@ begin
setlength(vorgaenger,length(vorgaenger)+1);
vorgaenger[length(vorgaenger)-1]:=tr;
end;
+ aktualisiereAlles;
end;
procedure tTransformation.loescheVorgaenger(tr: tTransformation);
@@ -1331,8 +1313,7 @@ begin
setlength(vorgaenger,length(vorgaenger)-1);
exit;
end;
- gibAus('Kann zu löschenden Vorgänger nicht finden!',3);
- raise exception.create('Kann zu löschenden Vorgänger nicht finden!');
+ fehler('Kann zu löschenden Vorgänger nicht finden!');
end;
function tTransformation.hatNachfolger: boolean;
@@ -1344,6 +1325,7 @@ procedure tTransformation.aktualisiereAlles; // (inkl. Informieren der Nachfolge
var
i: longint;
begin
+ holeInfosVonVorgaengern;
aktualisiereAchsen;
aktualisiereWmia;
aktualisiereXsTs;
@@ -1367,6 +1349,7 @@ begin
vorgaenger[0]:=tr;
vorgaenger[0].fuegeNachfolgerHinzu(self);
result:=true;
+ aktualisiereAlles;
end
else
result:=vorgaenger[0].ersetzeAnfangDurch(tr);
@@ -1453,8 +1436,20 @@ begin
result:=result+inttostr(tiefe+1)+': '+dumpParams;
end;
+// tKeineTransformation ********************************************************
+
+procedure tKeineTransformation.holeInfosVonVorgaengern;
+begin
+end;
+
// tUeberlagerung **************************************************************
+constructor tUeberlagerung.create;
+begin
+ inherited create;
+ wmiaExplizit:=true; // nicht sinnvoll berechenbar
+end;
+
procedure tUeberlagerung.addKomponente(tr: tTransformation);
begin
fuegeVorgaengerHinzu(tr);
@@ -1774,6 +1769,7 @@ begin
gr['x','y']:=xmax;
gr['y','x']:=tmin;
gr['y','y']:=tmax;
+ aktualisiereAlles;
end;
procedure tKoordinatenAusschnitt.aktualisiereXsTs;
@@ -1823,6 +1819,27 @@ begin
horizontal:=false;
end;
+procedure tAgglomeration.holeInfosVonVorgaengern;
+var
+ i: longint;
+begin
+ in_achsen:=vorgaenger[0].achsen;
+ for i:=1 to length(vorgaenger)-1 do begin
+ if in_achsen <> vorgaenger[i].achsen then begin
+ fehler('Vorgänger haben verschiedene Achsen, was bei Agglomeration nicht geht!');
+ end;
+ end;
+ in_xs_ts:=vorgaenger[0].xsteps_tsiz;
+ for i:=1 to length(vorgaenger)-1 do
+ if in_xs_ts <> vorgaenger[i].xsteps_tsiz then
+ fehler('Vorgänger haben verschiedene xsteps oder tsiz, was bei Agglomeration nicht geht!');
+ in_wmia:=vorgaenger[0].wmia;
+ for i:=1 to length(vorgaenger)-1 do begin
+ in_wmia['x']:=min(in_wmia['x'],vorgaenger[i].wmia['x']);
+ in_wmia['y']:=max(in_wmia['y'],vorgaenger[i].wmia['y']);
+ end;
+end;
+
procedure tAgglomeration.addKomponente(tr: tTransformation);
begin
fuegeVorgaengerHinzu(tr);
@@ -1980,468 +1997,6 @@ begin
result:='Betrag';
end;
-// tTransformationen ***********************************************************
-(*
-constructor tTransformationen.create;
-begin
- inherited create;
- setlength(Schritte,0);
-end;
-
-constructor tTransformationen.create(original: tTransformationen);
-begin
- inherited create;
- setlength(Schritte,0);
- if not kopiereVon(original) then
- halt(1);
-end;
-
-destructor tTransformationen.destroy;
-var
- i: longint;
-begin
- for i:=0 to length(Schritte)-1 do
- if assigned(Schritte[i]) then
- Schritte[i].free;
- setlength(Schritte,0);
- inherited destroy;
-end;
-
-function tTransformationen.gibInhalt(ii: longint): tTransformation;
-begin
- result:=Schritte[ii];
-end;
-
-procedure tTransformationen.nimmInhalt(ii: longint; inh: tTransformation);
-begin
- Schritte[ii]:=inh;
-end;
-
-function tTransformationen.rXstart: extended;
-begin
- result:=gibAchsen['x','x'];
-end;
-
-procedure tTransformationen.wXstart(x: extended);
-begin
- if kCount>0 then begin
- gibAus('Will xstart schreiben, aber der kCount ist '+inttostr(kCount),3);
- raise exception.create('Will xstart schreiben, aber der kCount ist '+inttostr(kCount));
- end;
- _xtstao['x','x']:=x;
-end;
-
-function tTransformationen.rXstop: extended;
-begin
- result:=gibAchsen['x','y'];
-end;
-
-procedure tTransformationen.wXstop(x: extended);
-begin
- if kCount>0 then begin
- gibAus('Will xstop schreiben, aber der kCount ist '+inttostr(kCount),3);
- raise exception.create('Will xstop schreiben, aber der kCount ist '+inttostr(kCount));
- end;
- _xtstao['x','y']:=x;
-end;
-
-function tTransformationen.rTstart: extended;
-begin
- result:=gibAchsen['y','x'];
-end;
-
-procedure tTransformationen.wTstart(t: extended);
-begin
- if kCount>0 then begin
- gibAus('Will tstart schreiben, aber der kCount ist '+inttostr(kCount),3);
- raise exception.create('Will tstart schreiben, aber der kCount ist '+inttostr(kCount));
- end;
- _xtstao['y','x']:=t;
-end;
-
-function tTransformationen.rTstop: extended;
-begin
- result:=gibAchsen['y','y'];
-end;
-
-procedure tTransformationen.wTstop(t: extended);
-begin
- if kCount>0 then begin
- gibAus('Will tstop schreiben, aber der kCount ist '+inttostr(kCount),3);
- raise exception.create('Will tstop schreiben, aber der kCount ist '+inttostr(kCount));
- end;
- _xtstao['y','y']:=t;
-end;
-
-function tTransformationen.rWmin: extended;
-begin
- result:=_wmia['x'];
-end;
-
-procedure tTransformationen.wWmin(w: extended);
-begin
- _wmia['x']:=w;
-end;
-
-function tTransformationen.rWmax: extended;
-begin
- result:=_wmia['y'];
-end;
-
-procedure tTransformationen.wWmax(w: extended);
-begin
- _wmia['y']:=w;
-end;
-
-function tTransformationen.rXsteps: longint;
-begin
- result:=xsteps_tsiz['x'];
-end;
-
-procedure tTransformationen.wXsteps(x: longint);
-begin
- if kCount>0 then begin
- gibAus('Will xsteps schreiben, aber der kCount ist '+inttostr(kCount),3);
- raise exception.create('Will xsteps schreiben, aber der kCount ist '+inttostr(kCount));
- end;
- _xs_ts['x']:=x;
-end;
-
-function tTransformationen.rTsiz: longint;
-begin
- result:=xsteps_tsiz['y'];
-end;
-
-function tTransformationen.xsteps_tsiz: tIntPoint;
-begin
- if count=0 then result:=_xs_ts
- else result:=last.xsteps_tsiz;
-end;
-
-procedure tTransformationen.wTsiz(t: longint);
-begin
- if kCount>0 then begin
- gibAus('Will tsiz schreiben, aber der kCount ist '+inttostr(kCount),3);
- raise exception.create('Will tsiz schreiben, aber der kCount ist '+inttostr(kCount));
- end;
- _xs_ts['y']:=t;
-end;
-
-function tTransformationen.count: longint;
-begin
- result:=length(Schritte);
-end;
-
-function tTransformationen.kCount: longint;
-var
- i: longint;
-begin
- result:=0;
- for i:=0 to count-1 do
- if Inhalt[i] is tKoordinatenTransformation then
- inc(result);
-end;
-
-function tTransformationen.wCount: longint;
-var
- i: longint;
-begin
- result:=0;
- for i:=0 to count-1 do
- if Inhalt[i] is tWerteTransformation then
- inc(result);
-end;
-
-procedure tTransformationen.achsenUndGroeszeAktualisieren;
-var
- i: longint;
-begin
- for i:=0 to count-1 do begin
- if i=0 then begin
- schritte[i].in_xs_ts:=_xs_ts;
- schritte[i].in_achsen:=_xtstao;
- end
- else begin
- schritte[i].in_xs_ts:=schritte[i-1].xsteps_tsiz;
- schritte[i].in_achsen:=schritte[i-1].achsen;
- end
- end;
-end;
-
-function tTransformationen.gibAchsen: t2x2Extended;
-begin
- if count=0 then result:=_xtstao
- else result:=last.achsen;
-end;
-
-function tTransformationen.last: tTransformation;
-begin
- result:=gibInhalt(count-1);
-end;
-
-procedure tTransformationen.clear;
-var
- i: longint;
-begin
- for i:=0 to length(Schritte)-1 do
- if assigned(Schritte[i]) then
- Schritte[i].free;
- setlength(Schritte,0);
-end;
-
-procedure tTransformationen.clearWerte;
-var
- i,j: longint;
-begin
- for i:=0 to length(Schritte)-1 do
- if assigned(Schritte[i]) and (Schritte[i] is tWerteTransformation) then
- Schritte[i].free;
- j:=0;
- for i:=0 to length(Schritte)-1 do
- if assigned(Schritte[i]) then begin
- Schritte[j]:=Schritte[i];
- inc(j);
- end;
- setlength(Schritte,j);
- achsenUndGroeszeAktualisieren;
-end;
-
-procedure tTransformationen.addFFT(hor,ver: boolean);
-begin
- setlength(Schritte,length(Schritte)+1);
- Schritte[length(Schritte)-1]:=tFFTTransformation.create;
- with last as tFFTTransformation do begin
- horizontal:=hor;
- vertikal:=ver;
- end;
- achsenUndGroeszeAktualisieren;
-end;
-
-procedure tTransformationen.AddSpiegelung;
-begin
- setlength(Schritte,length(Schritte)+1);
- Schritte[length(Schritte)-1]:=tSpiegelungsTransformation.create;
- achsenUndGroeszeAktualisieren;
-end;
-
-function tTransformationen.add(inh: tTransformation): boolean;
-begin
- result:=false;
- setlength(Schritte,length(Schritte)+1);
- if inh is tFFTTransformation then
- Schritte[length(Schritte)-1]:=tFFTTransformation.create(inh as tFFTTransformation)
- else if inh is tKoordinatenAusschnitt then
- Schritte[length(Schritte)-1]:=tKoordinatenAusschnitt.create(inh as tKoordinatenAusschnitt)
- else if inh is tAgglomeration then
- Schritte[length(Schritte)-1]:=tAgglomeration.create(inh as tAgglomeration)
- else if inh is tKonkreteKoordinatenTransformation then
- Schritte[length(Schritte)-1]:=tKonkreteKoordinatenTransformation.create(inh as tKonkreteKoordinatenTransformation)
- else if inh is tSpiegelungsTransformation then
- Schritte[length(Schritte)-1]:=tSpiegelungsTransformation.create
- else if inh is tWerteKnickTransformation then
- Schritte[length(Schritte)-1]:=tWerteKnickTransformation.create(inh as tWerteKnickTransformation)
- else if inh is tWerteLogTransformation then
- Schritte[length(Schritte)-1]:=tWerteLogTransformation.create(inh as tWerteLogTransformation)
- else if inh is tWerteLogAbsTransformation then
- Schritte[length(Schritte)-1]:=tWerteLogAbsTransformation.create(inh as tWerteLogAbsTransformation)
- else if inh is tWerteAbsTransformation then
- Schritte[length(Schritte)-1]:=tWerteAbsTransformation.create
- else begin
- gibAus('Ich kann unbekannten Transformationstyp ('+inh.ClassName+') nicht einfügen, da ich ihn nicht kopieren kann!',3);
- exit;
- end;
- achsenUndGroeszeAktualisieren;
- result:=true;
-end;
-
-function tTransformationen.add(st: boolean; s: string; f: tMyStringlist; etf: tExprToFloat): boolean;
-var
- i: longint;
-begin
- result:=false;
- if s='Knick' then begin
- setlength(Schritte,length(Schritte)+1);
- Schritte[length(Schritte)-1]:=tWerteKnickTransformation.create;
- with (last as tWerteKnickTransformation) do begin
- setlength(parameter,2);
- parameter[0]:=0;
- parameter[1]:=0;
- repeat
- if not f.metaReadln(s,true) then begin
- gibAus('Unerwartetes Dateiende!',3);
- exit;
- end;
- if s='Ende' then break;
- setlength(parameter,length(parameter)+2);
- parameter[length(parameter)-2]:=
- etf(st,erstesArgument(s,' '));
- if s='' then s:=inttostr(length(parameter) div 2 - 1);
- parameter[length(parameter)-1]:=
- etf(st,s);
- until false;
- for i:=0 to length(parameter)-1 do
- if odd(i) then
- parameter[i]:=
- parameter[i]/
- (length(parameter) div 2);
- setlength(parameter,length(parameter)+2);
- parameter[length(parameter)-2]:= 1;
- parameter[length(parameter)-1]:= 1;
- end;
- result:=true;
- exit;
- end;
- if startetMit('Log:',s) then begin
- setlength(Schritte,length(Schritte)+1);
- Schritte[length(Schritte)-1]:=tWerteLogTransformation.create;
- (last as tWerteLogTransformation).logMin:=etf(st,s);
- result:=true;
- exit;
- end;
- if startetMit('AbsLog:',s) then begin
- setlength(Schritte,length(Schritte)+1);
- Schritte[length(Schritte)-1]:=tWerteLogAbsTransformation.create;
- (last as tWerteLogAbsTransformation).logSkala:=etf(st,s);
- result:=true;
- exit;
- end;
- if s='Abs' then begin
- setlength(Schritte,length(Schritte)+1);
- Schritte[length(Schritte)-1]:=tWerteAbsTransformation.create;
- result:=true;
- exit;
- end;
- gibAus('Kenne Nachbearbeitungsmethode '''+s+''' nicht!',3);
-end;
-
-function tTransformationen.add(syntaxtest: boolean; s: string; xscale,yscale: extended; etf: tExprToFloat): boolean;
-begin
- setlength(Schritte,length(Schritte)+1);
- Schritte[length(Schritte)-1]:=tKonkreteKoordinatenTransformation.create;
- result:=(last as tKonkreteKoordinatenTransformation).initAbbildung(syntaxtest,s,xscale,yscale,etf);
- achsenUndGroeszeAktualisieren;
-end;
-
-function tTransformationen.append(inhs: tTransformationen): boolean;
-var
- i: longint;
-begin
- result:=true;
- for i:=0 to inhs.count-1 do
- result:=result and add(inhs[i]);
- achsenUndGroeszeAktualisieren;
-end;
-
-procedure tTransformationen.addAusschnitt(xmin,xmax,tmin,tmax: longint);
-begin
- setlength(Schritte,length(Schritte)+1);
- Schritte[length(Schritte)-1]:=tKoordinatenAusschnitt.create;
- (last as tKoordinatenAusschnitt).gr['x','x']:=xmin;
- (last as tKoordinatenAusschnitt).gr['x','y']:=xmax;
- (last as tKoordinatenAusschnitt).gr['y','x']:=tmin;
- (last as tKoordinatenAusschnitt).gr['y','y']:=tmax;
- achsenUndGroeszeAktualisieren;
-end;
-
-function tTransformationen.addAgglomeration(horizontal: boolean; schritt: extended; anzahl: longint): boolean;
-begin
- result:=false;
- if (xsteps_tsiz[char(ord('y')-byte(horizontal))]>1) xor (schritt<0) then begin
- gibAus('Eine explizite Schrittweite ist genau dann anzugeben, wenn die Werte in der Agglomerationsrichtung keine Ausdehnung haben!',3);
- exit;
- end;
- setlength(Schritte,length(Schritte)+1);
- Schritte[length(Schritte)-1]:=tAgglomeration.create;
- (last as tAgglomeration).horizontal:=horizontal;
- (last as tAgglomeration).schritt:=schritt;
- (last as tAgglomeration).anzahl:=anzahl;
- achsenUndGroeszeAktualisieren;
- result:=true;
-end;
-
-function tTransformationen.kopiereVon(original: tTransformationen): boolean;
-begin
- clear;
- _xs_ts:=original._xs_ts;
- _xtstao:=original._xtstao;
- _wmia:=original._wmia;
- result:=append(original);
-end;
-
-function tTransformationen.transformiereKoordinaten(const lage: tLage; const x: extended): extended;
-var
- p: tExtPoint;
- c,d: char;
-begin
- c:=char(ord('x')+byte(not(lage in [lOben,lUnten])));
- d:=char(ord('x')+byte(lage in [lOben,lUnten]));
-
- p[d]:=byte(lage in [lRechts,lOben]);
- p[c]:=(x-_xtstao[c,'x'])/(_xtstao[c,'y']-_xtstao[c,'x']);
- for d:='x' to 'y' do
- p[d]:=p[d]*(_xs_ts[d]-1);
- p:=transformiereKoordinaten(p);
- result:=p[c]/xsteps_tsiz[c]; writeln(' ',floattostr(result));
-end;
-
-function tTransformationen.transformiereKoordinaten(const x,y: extended): tExtPoint;
-begin
- result['x']:=x;
- result['y']:=y;
- result:=transformiereKoordinaten(result);
-end;
-
-function tTransformationen.transformiereKoordinaten(const p: tExtPoint): tExtPoint;
-var
- i: longint;
-begin
- result:=p;
- for i:=0 to count-1 do
- result:=inhalt[i].transformiereKoordinaten(result);
-end;
-
-function tTransformationen.transformiereWert(const x: extended): extended;
-var
- i: longint;
-begin
- result:=x;
- for i:=0 to count-1 do
- result:=inhalt[i].transformiereWert(result);
-end;
-
-function tTransformationen.dumpParams: string;
-var
- i: longint;
-begin
- result:=inttostr(xsteps)+' x '+inttostr(tsiz)+' ('+floattostr(xstart)+'..'+floattostr(xstop)+' x '+floattostr(tstart)+'..'+floattostr(tstop)+')';
- for i:=0 to count-1 do
- result:=result+#10' '+inhalt[i].dumpParams;
-end;
-
-procedure tTransformationen.berechneZielausdehnung(out grenzen: t2x2Longint);
-var
- RandPkt: tExtPoint;
- i,j,k: longint;
- c,d: char;
-begin
- for c:='x' to 'y' do
- for d:='x' to 'y' do
- grenzen[c,d]:=-1;
- for k:=0 to 1 do
- for i:=0 to (_xs_ts['x']*(1-k)+_xs_ts['y']*k)-1 do
- for j:=0 to 1 do begin
- RandPkt:=transformiereKoordinaten(
- i*(1-k) + j*k*(_xs_ts['x']-1),
- j*(1-k)*(_xs_ts['y']-1) + i*k);
- for c:='x' to 'y' do
- for d:='x' to 'y' do
- if ((d='y') xor (grenzen[c,d]>floor(RandPkt[c]) + byte(d='y'))) or
- ((k=0) and (i=0) and (j=0)) then
- grenzen[c,d]:=floor(RandPkt[c]) + byte(d='y');
- end;
-end;
-*)
-
function liesTWerteTransformationen(st: boolean; s: string; f: tMyStringlist; etf: tExprToFloat; var tr: tTransformation): boolean;
var
i: longint;
diff --git a/werteunit.pas b/werteunit.pas
index c1b66ec..d77c60c 100644
--- a/werteunit.pas
+++ b/werteunit.pas
@@ -1533,15 +1533,6 @@ begin
werte.werte[2*i]:=0; // Ims = 0
werte.werte[2*i+1]:=0; // Dummy-Wavelet
end;
-(* gibAus('dump:',3);
- for i:=0 to werte.tsiz-1 do
- if (i=0) or (i=werte.tsiz-1) or
- (werte.werte[2*i+1]<>0) or
- (werte.werte[2*i]<>werte.werte[2*(i-1)]) or
- (werte.werte[2*i]<>werte.werte[2*(i+1)]) then
- gibAus(inttostr(i)+' '+floattostr(werte.werte[2*i])+' '+floattostr(werte.werte[2*i+1]),3);
- gibAus('ende',3);
- exit; *)
end;
end{of case};
end