summaryrefslogtreecommitdiff
path: root/typenunit.pas
diff options
context:
space:
mode:
Diffstat (limited to 'typenunit.pas')
-rw-r--r--typenunit.pas23
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 ******************************************************