diff options
-rw-r--r-- | epost.lpr | 19 | ||||
-rw-r--r-- | epost.lps | 142 | ||||
-rw-r--r-- | epostunit.pas | 125 | ||||
-rw-r--r-- | typenunit.pas | 82 | ||||
-rw-r--r-- | werteunit.inc | 36 | ||||
-rw-r--r-- | werteunit.pas | 12 |
6 files changed, 345 insertions, 71 deletions
@@ -171,6 +171,25 @@ begin wertes[j].kopiereVon(syntaxTest,wertes[i]); continue; end; + if istDasBefehl('Radon-Transformation',s,bekannteBefehle,true) then begin + i:=findeWerte(erstesArgument(s),nil,@wertes,@konturen,false); + if i<0 then begin + aufraeumen; + halt(1); + end; + if not startetMit('zu ',s) then begin + gibAus('Fehlende Parameter, erwartet: ''Radon $Quelle zu $Ziel''',3); + aufraeumen; + halt(1); + end; + j:=findeWerte(s,inf,@wertes,@konturen,true); + if j<0 then begin + aufraeumen; + halt(1); + end; + wertes[j].berechneRadonTransformation(syntaxTest,inf,maxThreads,wertes[i]); + continue; + end; if istDasBefehl('erzeuge Dummy-Werte',s,bekannteBefehle,true) then begin b1:=startetMit('gefüllt',s); i:=findeWerte(s,inf,@wertes,@konturen,true); @@ -7,8 +7,8 @@ <Unit0> <Filename Value="epost.lpr"/> <IsPartOfProject Value="True"/> - <TopLine Value="85"/> - <CursorPos Y="134"/> + <TopLine Value="172"/> + <CursorPos X="66" Y="190"/> <UsageCount Value="202"/> <Loaded Value="True"/> </Unit0> @@ -23,28 +23,29 @@ <Filename Value="epostunit.pas"/> <IsPartOfProject Value="True"/> <EditorIndex Value="1"/> - <TopLine Value="1355"/> - <CursorPos X="60" Y="1370"/> + <TopLine Value="8637"/> + <CursorPos X="97" Y="8658"/> <UsageCount Value="201"/> <Loaded Value="True"/> </Unit2> <Unit3> <Filename Value="werteunit.pas"/> <IsPartOfProject Value="True"/> - <IsVisibleTab Value="True"/> <EditorIndex Value="9"/> - <TopLine Value="629"/> - <CursorPos Y="646"/> - <FoldState Value=" T3k80{D4L1Y"/> + <TopLine Value="322"/> + <CursorPos Y="899"/> + <FoldState Value=" T3kB0{D4L2 ppMu90R2n"/> <UsageCount Value="200"/> <Loaded Value="True"/> </Unit3> <Unit4> <Filename Value="typenunit.pas"/> <IsPartOfProject Value="True"/> + <IsVisibleTab Value="True"/> <EditorIndex Value="12"/> - <TopLine Value="767"/> - <CursorPos Y="853"/> + <TopLine Value="2367"/> + <CursorPos X="50" Y="2396"/> + <FoldState Value=" T3w00IE piak403B pjIk80O7]IZjY099[R4jM09F[95c0PC[R4k607C]j1]IA2]9Ljd066[s5C06F[95U0AC[95S0JA]a6k40WC[{R5G0I377[K4mb0M3]9Jk60K]Tj8kF]l]cYjY[{u6bja0AB pjEk9035[{u5A04B[{B5O049]RBjd042 pj5jF0K2F"/> <UsageCount Value="200"/> <Loaded Value="True"/> </Unit4> @@ -78,9 +79,9 @@ <Filename Value="werteunit.inc"/> <IsPartOfProject Value="True"/> <EditorIndex Value="10"/> - <TopLine Value="142"/> - <CursorPos X="17" Y="170"/> - <UsageCount Value="156"/> + <TopLine Value="172"/> + <CursorPos X="21" Y="183"/> + <UsageCount Value="159"/> <Loaded Value="True"/> </Unit8> <Unit9> @@ -94,7 +95,7 @@ <EditorIndex Value="8"/> <TopLine Value="515"/> <CursorPos X="21" Y="543"/> - <UsageCount Value="76"/> + <UsageCount Value="78"/> <Loaded Value="True"/> </Unit10> <Unit11> @@ -118,7 +119,7 @@ <EditorIndex Value="2"/> <TopLine Value="238"/> <CursorPos X="33" Y="202"/> - <UsageCount Value="90"/> + <UsageCount Value="92"/> <Loaded Value="True"/> </Unit13> <Unit14> @@ -189,129 +190,128 @@ <EditorIndex Value="6"/> <TopLine Value="87"/> <CursorPos X="3" Y="18"/> - <UsageCount Value="25"/> + <UsageCount Value="27"/> <Loaded Value="True"/> </Unit23> </Units> <JumpHistory Count="30" HistoryIndex="29"> <Position1> - <Filename Value="typenunit.pas"/> - <Caret Line="100" Column="55" TopLine="82"/> + <Filename Value="werteunit.inc"/> + <Caret Line="174" Column="3" TopLine="154"/> </Position1> <Position2> - <Filename Value="typenunit.pas"/> - <Caret Line="29" Column="28" TopLine="11"/> + <Filename Value="epostunit.pas"/> + <Caret Line="8646" Column="39" TopLine="8634"/> </Position2> <Position3> - <Filename Value="typenunit.pas"/> - <Caret Line="36" Column="58" TopLine="11"/> + <Filename Value="epostunit.pas"/> + <Caret Line="8651" Column="82" TopLine="8633"/> </Position3> <Position4> - <Filename Value="typenunit.pas"/> - <Caret Line="44" Column="63" TopLine="15"/> + <Filename Value="epostunit.pas"/> + <Caret Line="8655" Column="72" TopLine="8635"/> </Position4> <Position5> - <Filename Value="typenunit.pas"/> - <Caret Line="45" Column="58" TopLine="16"/> + <Filename Value="epostunit.pas"/> + <Caret Line="8669" Column="15" TopLine="8643"/> </Position5> <Position6> - <Filename Value="typenunit.pas"/> - <Caret Line="49" Column="62" TopLine="20"/> + <Filename Value="epostunit.pas"/> + <Caret Line="472" TopLine="455"/> </Position6> <Position7> - <Filename Value="typenunit.pas"/> - <Caret Line="50" Column="58" TopLine="21"/> + <Filename Value="epost.lpr"/> + <Caret Line="190" Column="60" TopLine="172"/> </Position7> <Position8> - <Filename Value="typenunit.pas"/> - <Caret Line="54" Column="58" TopLine="25"/> + <Filename Value="werteunit.inc"/> + <Caret Line="180" Column="7" TopLine="154"/> </Position8> <Position9> - <Filename Value="typenunit.pas"/> - <Caret Line="56" Column="58" TopLine="27"/> + <Filename Value="werteunit.inc"/> + <Caret Line="179" Column="29" TopLine="161"/> </Position9> <Position10> - <Filename Value="typenunit.pas"/> - <Caret Line="60" Column="59" TopLine="31"/> + <Filename Value="werteunit.inc"/> + <Caret Line="199" Column="56" TopLine="167"/> </Position10> <Position11> <Filename Value="typenunit.pas"/> - <Caret Line="129" Column="47" TopLine="128"/> + <Caret Line="2390" TopLine="2364"/> </Position11> <Position12> - <Filename Value="typenunit.pas"/> - <Caret Line="128" Column="26" TopLine="112"/> + <Filename Value="epostunit.pas"/> + <Caret Line="583" Column="65" TopLine="560"/> </Position12> <Position13> - <Filename Value="typenunit.pas"/> - <Caret Line="178" Column="24" TopLine="150"/> + <Filename Value="epostunit.pas"/> + <Caret Line="8650" Column="40" TopLine="8621"/> </Position13> <Position14> - <Filename Value="typenunit.pas"/> - <Caret Line="1167" Column="35" TopLine="1097"/> + <Filename Value="epostunit.pas"/> </Position14> <Position15> - <Filename Value="typenunit.pas"/> - <Caret Line="1162" Column="15" TopLine="1031"/> + <Filename Value="epostunit.pas"/> + <Caret Line="8639" Column="20" TopLine="8621"/> </Position15> <Position16> - <Filename Value="typenunit.pas"/> - <Caret Line="110" Column="34" TopLine="93"/> + <Filename Value="epostunit.pas"/> + <Caret Line="468" Column="30" TopLine="450"/> </Position16> <Position17> - <Filename Value="typenunit.pas"/> - <Caret Line="1161" TopLine="1139"/> + <Filename Value="epostunit.pas"/> + <Caret Line="5433" Column="49" TopLine="5416"/> </Position17> <Position18> - <Filename Value="typenunit.pas"/> - <Caret Line="1154" Column="14" TopLine="1062"/> + <Filename Value="epostunit.pas"/> + <Caret Line="468" Column="30" TopLine="450"/> </Position18> <Position19> - <Filename Value="typenunit.pas"/> + <Filename Value="epostunit.pas"/> + <Caret Line="5393" Column="78" TopLine="5364"/> </Position19> <Position20> - <Filename Value="typenunit.pas"/> - <Caret Line="110" Column="16" TopLine="81"/> + <Filename Value="epostunit.pas"/> + <Caret Line="5433" Column="66" TopLine="5405"/> </Position20> <Position21> - <Filename Value="typenunit.pas"/> - <Caret Line="176" Column="23" TopLine="148"/> + <Filename Value="epostunit.pas"/> + <Caret Line="8630" Column="49" TopLine="8618"/> </Position21> <Position22> - <Filename Value="typenunit.pas"/> - <Caret Line="996" Column="3" TopLine="961"/> + <Filename Value="epostunit.pas"/> </Position22> <Position23> - <Filename Value="typenunit.pas"/> - <Caret Line="1011" Column="3" TopLine="961"/> + <Filename Value="epostunit.pas"/> + <Caret Line="468" Column="30" TopLine="439"/> </Position23> <Position24> - <Filename Value="typenunit.pas"/> - <Caret Line="1171" Column="5" TopLine="1034"/> + <Filename Value="epostunit.pas"/> + <Caret Line="5393" Column="78" TopLine="5097"/> </Position24> <Position25> - <Filename Value="typenunit.pas"/> - <Caret Line="129" Column="25" TopLine="121"/> + <Filename Value="epostunit.pas"/> + <Caret Line="5445" Column="91" TopLine="5420"/> </Position25> <Position26> - <Filename Value="typenunit.pas"/> - <Caret Line="189" Column="23" TopLine="161"/> + <Filename Value="epostunit.pas"/> + <Caret Line="8626" Column="31" TopLine="8597"/> </Position26> <Position27> - <Filename Value="epostunit.pas"/> - <Caret Line="1370" Column="60" TopLine="1355"/> + <Filename Value="typenunit.pas"/> + <Caret Line="432" Column="86" TopLine="422"/> </Position27> <Position28> <Filename Value="typenunit.pas"/> - <Caret Line="190" Column="14" TopLine="175"/> + <Caret Line="2335" Column="21" TopLine="2220"/> </Position28> <Position29> <Filename Value="typenunit.pas"/> - <Caret Line="130" Column="30" TopLine="113"/> + <Caret Line="2336" Column="26" TopLine="2221"/> </Position29> <Position30> <Filename Value="typenunit.pas"/> - <Caret Line="192" Column="28" TopLine="164"/> + <Caret Line="2350" Column="25" TopLine="2349"/> </Position30> </JumpHistory> </ProjectSession> diff --git a/epostunit.pas b/epostunit.pas index 660a6de..0afa38c 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -177,6 +177,7 @@ type function berechneIntegral(sT: boolean; f: tMyStringList; threads: longint; quelle: tWerte): boolean; function berechneFFT(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean; function berechneFFT2d(sT: boolean; f: tMyStringList; threads: longint; warn: tWarnStufe): boolean; + function berechneRadonTransformation(sT: boolean; f: tMyStringList; threads: longint; quelle: tWerte): boolean; function erzeugeLinearesBild(sT: boolean; var f: tMyStringList; threads: longint): boolean; function erzeugeAscii(sT: boolean; f: tMyStringList): boolean; function erzeugeLineout(sT: boolean; f: tMyStringList): boolean; @@ -464,6 +465,12 @@ type destructor destroy; override; procedure stExecute; override; end; + tRadonTransformationsThread = class(tLogThread) + qu,zi: tWerte; + xMi,xMa: longint; + constructor create(quelle,ziel: tWerte; xMin,xMax: longint); + procedure stExecute; override; + end; function neuePalette(f: tMyStringList): boolean; function initBmpHeader(w,h: longint): tBmpHeader; @@ -5375,6 +5382,72 @@ begin result:=true; end; +function tWerte.berechneRadonTransformation(sT: boolean; f: tMyStringList; threads: longint; quelle: tWerte): boolean; +var + Zeit: extended; + winkelSchritte,verschiebungsSchritte: int64; + s: string; + bekannteBefehle: tMyStringList; + i: longint; + fertig: boolean; + radonTransformationsThreads: array of tRadonTransformationsThread; +begin + result:=false; + warteAufBeendigungDesLeseThreads; + Zeit:=now; + winkelSchritte:=180; + verschiebungsSchritte:=180; + bekannteBefehle:=tMyStringList.create; + repeat + if not f.metaReadln(s,true) then begin + gibAus('Unerwartetes Dateiende!',3); + bekannteBefehle.free; + exit; + end; + bekannteBefehle.clear; + if istDasBefehl('Ende',s,bekannteBefehle,false) then break; + if istDasBefehl('Winkelschritte:',s,bekannteBefehle,true) then begin + winkelSchritte:=round(exprToFloat(sT,s)); + continue; + end; + if istDasBefehl('Verschiebungsschritte:',s,bekannteBefehle,true) then begin + verschiebungsSchritte:=round(exprToFloat(sT,s)); + continue; + end; + bekannteBefehle.sort; + gibAus('Verstehe Option '''+s+''' nicht bei Erstellung einer Radon-Transformation!'#10'Ich kenne:'#10+bekannteBefehle.text,3); + bekannteBefehle.free; + exit; + until false; + bekannteBefehle.free; + + _xSteps:=winkelSchritte; + _tSiz:=verschiebungsSchritte; + transformationen:=tRTTransformation.create(quelle.transformationen,winkelSchritte,verschiebungsSchritte); + + if not sT then begin + holeRAM(0); + gibAus('berechne Radon-Transformation ...',3); + setLength(radonTransformationsThreads,threads); + for i:=0 to length(radonTransformationsThreads)-1 do + radonTransformationsThreads[i]:=tRadonTransformationsThread.create( + quelle, + self, + round(_xSteps/length(radonTransformationsThreads)*i), + round(_xSteps/length(radonTransformationsThreads)*(i+1))-1 + ); + repeat + fertig:=true; + for i:=0 to length(radonTransformationsThreads)-1 do + fertig:=radonTransformationsThreads[i].fertig and fertig; + if not fertig then + sleep(10); + until fertig; + gibAus('... fertig! '+timetostr(now-Zeit),3); + end; + result:=true; +end; + function tWerte.erzeugeLinearesBild(sT: boolean; var f: tMyStringList; threads: longint): boolean; var s,datei: string; @@ -8550,6 +8623,58 @@ begin gibAus('SkalierungsThread beendet',1); end; +// tRadonTransformationsThread ************************************************* + +constructor tRadonTransformationsThread.create(quelle,ziel: tWerte; xMin,xMax: longint); +begin + inherited create; + qu:=quelle; + zi:=ziel; + xMi:=xMin; + xMa:=xMax; + suspended:=false; + gibAus('RadonTransformationsThread erzeugt: '+intToStr(xMi)+'-'+intToStr(xMa),1); +end; + +procedure tRadonTransformationsThread.stExecute; +var + dx,dy: extended; +begin + gibAus('RadonTransformationsThread gestartet',1); + dx:=(zi._xStop-zi._xStart)/(zi._xSteps-1); + dy:=(zi._tStop-zi._tStart)/(zi._tSiz-1); + case zi.genauigkeit of + gSingle: + case qu.genauigkeit of + gSingle: + zi.sWerte.radonTransformation(xMi,xMa,dx,dy,pTLLWerteSingle(@qu.sWerte)); + gDouble: + zi.sWerte.radonTransformation(xMi,xMa,dx,dy,pTLLWerteDouble(@qu.dWerte)); + gExtended: + zi.sWerte.radonTransformation(xMi,xMa,dx,dy,pTLLWerteExtended(@qu.eWerte)); + end{of case}; + gDouble: + case qu.genauigkeit of + gSingle: + zi.dWerte.radonTransformation(xMi,xMa,dx,dy,pTLLWerteSingle(@qu.sWerte)); + gDouble: + zi.dWerte.radonTransformation(xMi,xMa,dx,dy,pTLLWerteDouble(@qu.dWerte)); + gExtended: + zi.dWerte.radonTransformation(xMi,xMa,dx,dy,pTLLWerteExtended(@qu.eWerte)); + end{of case}; + gExtended: + case qu.genauigkeit of + gSingle: + zi.eWerte.radonTransformation(xMi,xMa,dx,dy,pTLLWerteSingle(@qu.sWerte)); + gDouble: + zi.eWerte.radonTransformation(xMi,xMa,dx,dy,pTLLWerteDouble(@qu.dWerte)); + gExtended: + zi.eWerte.radonTransformation(xMi,xMa,dx,dy,pTLLWerteExtended(@qu.eWerte)); + end{of case}; + end{of case}; + gibAus('RadonTransformationsThread beendet',1); +end; + // sonstiges ******************************************************************* function findePalette(out palette: tPalette; name: string): boolean; diff --git a/typenunit.pas b/typenunit.pas index 8c04e7a..faddb6f 100644 --- a/typenunit.pas +++ b/typenunit.pas @@ -431,6 +431,18 @@ type function positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; override; function dumpParams: string; override; end; + tRTTransformation = class (tKoordinatenTransformation) + // repräsentiert die Transformation der Koordinaten bei einer Radontransformation + winkelSchritte, verschiebeSchritte: int64; + constructor create; overload; + constructor create(vorg: tTransformation; ws,vs: int64); + procedure aktualisiereAchsen; override; + procedure aktualisiereXsTs; override; + // keine Änderung der Positionen, der Werte(skalierung) + 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; @@ -2315,6 +2327,76 @@ begin result:=result + ' ' + inherited dumpParams; end; +// tRTTransformation *********************************************************** + +constructor tRTTransformation.create; +begin + inherited create; + winkelSchritte:=180; + verschiebeSchritte:=180; +end; + +constructor tRTTransformation.create(vorg: tTransformation; ws,vs: int64); +begin + inherited create; + winkelSchritte:=ws; + verschiebeSchritte:=vs; + fuegeVorgaengerHinzu(vorg); +end; + +procedure tRTTransformation.aktualisiereAchsen; +begin + outAchsen['x','x']:=0; // Winkel-Start + outAchsen['x','y']:=pi*(1-1/winkelSchritte); // Winkel-Stop + outAchsen['y','x']:=sqrt(sqr(inAchsen['x','y']-inAchsen['x','x']) + sqr(inAchsen['y','y']-inAchsen['y','x']))/2; // Verschiebe-Start + outAchsen['y','y']:=-outAchsen['y','x']; // Verschiebe-Stop +end; + +procedure tRTTransformation.aktualisiereXsTs; +begin + outXSTS['x']:=winkelSchritte; + outXSTS['y']:=verschiebeSchritte; +end; + +function tRTTransformation.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 RT 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 tRTTransformation.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 RT aussahen, wir setzen sie 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 tRTTransformation.dumpParams: string; +begin + result:='RT: '+intToStr(winkelSchritte)+' x '+intToStr(verschiebeSchritte); + result:=result + ' ' + inherited dumpParams; +end; + // tSpiegelungsTransformation ************************************************** constructor tSpiegelungsTransformation.create; diff --git a/werteunit.inc b/werteunit.inc index c7182a9..704e1bc 100644 --- a/werteunit.inc +++ b/werteunit.inc @@ -170,6 +170,42 @@ begin end; {$ENDIF} +{$IFDEF tLLWerte_radonTransformation} +//procedure tLLWerte.radonTransformation(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteSingle); +var + oX,oY,iX,iY: longint; + oYf,cX,sX,iXM,iYM,oYM,wert: extended; +begin + iXM:=(qu^.params.xSteps-1)/2; + iYM:=(qu^.params.tSiz-1)/2; + oYM:=(params.tSiz-1)/2; + for oX:=xMin to xMax do begin + cX:=cos(oX*xStep); + sX:=sin(oX*xStep); + for oY:=0 to params.tSiz-1 do + werte[oX+oY*params.xSteps]:=0; + for iY:=0 to qu^.params.tSiz-1 do + for iX:=0 to qu^.params.xSteps-1 do begin + oYf:=((iX-iXM)*sX + (iY-iYM)*cX) / yStep + oYM; + wert:=qu^.werte[iX + iY*qu^.params.xSteps]; + if oYf<=0 then + werte[oX]:= + werte[oX] + wert + else if oYf >= params.tSiz-1 then + werte[oX + (params.tSiz-1)*params.xSteps]:= + werte[oX + (params.tSiz-1)*params.xSteps] + wert + else begin + oY:=floor(oYf); + werte[oX + oY*params.xSteps]:= + werte[oX + oY*params.xSteps] + wert * (1-oYf+oY); + werte[oX + (oY+1)*params.xSteps]:= + werte[oX + (oY+1)*params.xSteps] + wert * (oYf-oY); + end; + end; + end; +end; +{$ENDIF} + {$IFDEF tLLWerte_integriere} //procedure tLLWerte.integriereSingle(qu: pTLLWerteSingle; xMi,xMa,tMi,tMa,xOf,tOf: longint; richtung: tIntegrationsRichtung); var diff --git a/werteunit.pas b/werteunit.pas index f11c717..7b7385f 100644 --- a/werteunit.pas +++ b/werteunit.pas @@ -54,6 +54,9 @@ type function liesDateien(dateien: tGenerischeInputDateiInfoArray): boolean; function fft(senkrecht,invers: boolean; algo: tFFTAlgorithmus; fen: tFenster; hg: tExtendedArray; out pvFehler: extended): boolean; overload; inline; function fft(sMin,sMax: longint; senkrecht,invers: boolean; algo: tFFTAlgorithmus; fen: tFenster; hg: tExtendedArray; out pvFehler: extended): boolean; overload; + procedure radonTransformation(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteSingle); overload; + procedure radonTransformation(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteDouble); overload; + procedure radonTransformation(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteExtended); overload; procedure spiegle; overload; procedure spiegle(tMin,tMax: longint); overload; procedure fft2dNachbearbeitungA(nB: tFFTDatenordnung); @@ -891,6 +894,15 @@ begin result:=not (in0 or out0); end; +{$DEFINE tLLWerte_radonTransformation} +procedure tLLWerte.radonTransformation(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteSingle); +{$INCLUDE werteunit.inc} +procedure tLLWerte.radonTransformation(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteDouble); +{$INCLUDE werteunit.inc} +procedure tLLWerte.radonTransformation(xMin,xMax: longint; xStep,yStep: extended; qu: pTLLWerteExtended); +{$INCLUDE werteunit.inc} +{$UNDEF tLLWerte_radonTransformation} + procedure tLLWerte.schreibeWert(var f: textfile; x,y: longint; beschriftung: tExtPoint; var letzterWert: extended; entspringen,verschiebung: extended; skalierung: string; kvs: tKnownValues; cbgv: tCallBackGetValue); var tmp: extended; |