From 395d51482b8434de790ffa7703a8990fff6315b6 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 12 Dec 2017 13:39:49 +0100 Subject: epostunit.pas: skaliere neu --- typenunit.pas | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) (limited to 'typenunit.pas') diff --git a/typenunit.pas b/typenunit.pas index 7a0a3e9..2fd1bf6 100644 --- a/typenunit.pas +++ b/typenunit.pas @@ -446,6 +446,18 @@ type // keine Änderung der Achsenbegrenzungen, der Werte(skalierung) function dumpParams: string; override; end; + tLineareAchsenVerzerrTransformation = class (tKoordinatenTransformation) + private + procedure aktualisiereAchsen; override; + // keine Änderung der Punkt-Positionen + function transformiereAchseEinzeln(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; override; + function transformiereAchseEinzelnInvers(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; override; + // keine Änderung der Werte + public + fak: tExtPoint; + constructor create; + function dumpParams: string; override; + end; tLambdaZuOmegaTransformation = class (tKoordinatenTransformation) private _faktor: extended; @@ -2444,6 +2456,45 @@ begin outXSTS[c]:=gr[c,'y']-gr[c,'x']+1; end; +// tLineareAchsenVerzerrTransformation ***************************************** + +procedure tLineareAchsenVerzerrTransformation.aktualisiereAchsen; +var + c,d: char; +begin + for c:='x' to 'y' do + for d:='x' to 'y' do + outAchsen[c,d]:=inAchsen[c,d]*fak[c]; +end; + +function tLineareAchsenVerzerrTransformation.transformiereAchseEinzeln(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; +begin + result:=x*fak[paralleleRichtung[l]]; + if auszerhalbIstFehler then + testeAuszerhalb(l,result); +end; + +function tLineareAchsenVerzerrTransformation.transformiereAchseEinzelnInvers(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended; +begin + if auszerhalbIstFehler then + testeAuszerhalb(l,x); + result:=x/fak[paralleleRichtung[l]]; +end; + +constructor tLineareAchsenVerzerrTransformation.create; +var + c: char; +begin + inherited create; + for c:='x' to 'y' do + fak[c]:=1; +end; + +function tLineareAchsenVerzerrTransformation.dumpParams: string; +begin + result:='* ' + tExtPointToStr(fak) + ' ' + inherited dumpParams; +end; + // tLambdaZuOmegaTransformation ************************************************ constructor tLambdaZuOmegaTransformation.create; -- cgit v1.2.3-70-g09d2