diff options
author | Erich Eckner <git@eckner.net> | 2017-12-12 13:39:49 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-12-12 13:39:49 +0100 |
commit | 395d51482b8434de790ffa7703a8990fff6315b6 (patch) | |
tree | d46c157794c0f306d2b2329af2b13776e0d178a2 /typenunit.pas | |
parent | fd99b85a22059e22b7f98b1668fc6d0a60493d5c (diff) | |
download | epost-395d51482b8434de790ffa7703a8990fff6315b6.tar.xz |
epostunit.pas: skaliere neu
Diffstat (limited to 'typenunit.pas')
-rw-r--r-- | typenunit.pas | 51 |
1 files changed, 51 insertions, 0 deletions
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; |