diff options
Diffstat (limited to 'typenunit.pas')
-rw-r--r-- | typenunit.pas | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/typenunit.pas b/typenunit.pas index 7bf5ec6..97e135d 100644 --- a/typenunit.pas +++ b/typenunit.pas @@ -414,8 +414,12 @@ type function dumpParams: string; override; end; tLambdaZuOmegaTransformation = class (tKoordinatenTransformation) + private + _faktor: extended; + public horizontal, vertikal: boolean; constructor create; overload; + constructor create(faktor: extended); overload; function verhaeltnisHorizontal: extended; function verhaeltnisVertikal: extended; function wertZuPositionAufAchse(const l: tLage; x: extended): extended; override; @@ -2176,9 +2180,15 @@ end; constructor tLambdaZuOmegaTransformation.create; begin + create(2*pi*299792458); +end; + +constructor tLambdaZuOmegaTransformation.create(faktor: extended); +begin inherited create; horizontal:=false; vertikal:=false; + _faktor:=faktor; end; function tLambdaZuOmegaTransformation.verhaeltnisHorizontal: extended; @@ -2201,8 +2211,8 @@ function tLambdaZuOmegaTransformation.wertZuPositionAufAchse(const l: tLage; x: begin if ((l in [lOben,lUnten]) and horizontal) or // transformierte Achse? ((l in [lLinks,lRechts]) and vertikal) then - x:=2*pi*299792458/x; - result:=inherited wertZuPositionAufAchse(l,x); // Vorfahren befragen + x:=_faktor/x; + result:=vorgaenger[0].wertZuPositionAufAchse(l,x); // Vorfahren befragen end; procedure tLambdaZuOmegaTransformation.aktualisiereAchsen; @@ -2210,15 +2220,15 @@ var c: char; begin if horizontal then begin - outAchsen['x','x']:=2*pi*299792458/inAchsen['x','y']; - outAchsen['x','y']:=2*pi*299792458/inAchsen['x','x']; + outAchsen['x','x']:=_faktor/inAchsen['x','y']; + outAchsen['x','y']:=_faktor/inAchsen['x','x']; end else for c:='x' to 'y' do outAchsen['x',c]:=inAchsen['x',c]; if vertikal then begin - outAchsen['y','x']:=2*pi*299792458/inAchsen['y','y']; - outAchsen['y','y']:=2*pi*299792458/inAchsen['y','x']; + outAchsen['y','x']:=_faktor/inAchsen['y','y']; + outAchsen['y','y']:=_faktor/inAchsen['y','x']; end else for c:='x' to 'y' do @@ -2256,6 +2266,7 @@ begin if vertikal then result:=result+' und vertikal'; startetMit(' und ',result); + result:=result+' ('+floatToStr(_faktor)+')'; end; // tKoordinatenAusschnitt ****************************************************** |