summaryrefslogtreecommitdiff
path: root/typenunit.pas
diff options
context:
space:
mode:
Diffstat (limited to 'typenunit.pas')
-rw-r--r--typenunit.pas38
1 files changed, 36 insertions, 2 deletions
diff --git a/typenunit.pas b/typenunit.pas
index a6e6fb8..01bca49 100644
--- a/typenunit.pas
+++ b/typenunit.pas
@@ -284,7 +284,7 @@ type
procedure wTransformationen(tr: tTransformation);
public
maxW,minW,np,beta: extended;
- maxP,minP: tInt64Point;
+ maxP,minP,zDP: tInt64Point;
tSiz,xSteps,tSiz_,xSteps_: longint;
istKomplex: boolean;
knownValues: tKnownValues;
@@ -308,6 +308,7 @@ type
inAchsen,outAchsen: t2x2Extended;
inWMia,outWMia: tExtPoint;
inPMia,outPMia: t2x2Int64;
+ inZDP,outZDP: tInt64Point;
wmiaExplizit: boolean; // wMia wurde explizit gesetzt
_anzZugehoerigerDaten: longint;
@@ -347,6 +348,8 @@ type
procedure wPMin(p: tInt64Point);
function rPMax: tInt64Point;
procedure wPMax(p: tInt64Point);
+ function rZDP: tInt64Point;
+ procedure wZDP(p: tInt64Point);
function rXSteps: longint;
procedure wXSteps(x: longint);
function rTSiz: longint;
@@ -404,6 +407,9 @@ type
property pMax: tInt64Point
read rPMax
write wPMax;
+ property zDP: tInt64Point
+ read rZDP
+ write wZDP;
property xSteps: longint
read rXSteps
write wXSteps;
@@ -1552,6 +1558,7 @@ begin
minW:=0;
maxP:=int64Point(-1,-1);
minP:=int64Point(-1,-1);
+ zDP:=int64Point(-1,-1);
transformationen:=tTransformation.create;
transformationen.erhoeheZugehoerigkeitsanzahl;
np:=1;
@@ -1571,6 +1578,7 @@ begin
minW:=original.minW;
maxP:=original.maxP;
minP:=original.minP;
+ zDP:=original.minP;
transformationen:=tIdentitaet.create(original.transformationen);
np:=original.np;
beta:=original.beta;
@@ -1630,18 +1638,22 @@ begin
if xSteps>1 then begin
knownValues.add(knownValue('maxPX', maxP['x']/(xSteps-1)*(xStop-xStart) + xStart));
knownValues.add(knownValue('minPX', minP['x']/(xSteps-1)*(xStop-xStart) + xStart));
+ knownValues.add(knownValue('zDPX', zDP['x']/(xSteps-1)*(xStop-xStart) + xStart));
end
else begin
knownValues.add(knownValue('maxPX', xStart));
knownValues.add(knownValue('minPX', xStart));
+ knownValues.add(knownValue('zDPX', xStart));
end;
if tSiz>1 then begin
knownValues.add(knownValue('maxPY', maxP['y']/(tSiz-1)*(tStop-tStart) + tStart));
knownValues.add(knownValue('minPY', minP['y']/(tSiz-1)*(tStop-tStart) + tStart));
+ knownValues.add(knownValue('zDPY', maxP['y']/(tSiz-1)*(tStop-tStart) + tStart));
end
else begin
knownValues.add(knownValue('maxPY', tStart));
knownValues.add(knownValue('minPY', tStart));
+ knownValues.add(knownValue('zDPY', tStart));
end;
knownValues.add(knownValue('beta',beta));
knownValues.add(knownValue('xStart',xStart));
@@ -1860,9 +1872,11 @@ begin
if not wmiaExplizit then begin
inWMia:=vorgaenger[0].wMia;
inPMia:=vorgaenger[0].pMia;
+ inZDP:=vorgaenger[0].zDP;
for i:=1 to length(vorgaenger)-1 do
if (inWMia <> vorgaenger[i].wMia) or
- (inPMia <> vorgaenger[i].pMia) then
+ (inPMia <> vorgaenger[i].pMia) or
+ (inZDP <> vorgaenger[i].zDP) then
fehler('Vorgänger haben verschiedene wmin, wmax, pmin oder pmax, was generisch nicht zu verstehen ist!');
end;
end;
@@ -1882,6 +1896,7 @@ begin
if not wmiaExplizit then begin
outWMia:=inWMia;
outPMia:=inPMia;
+ outZDP:=inZDP;
end;
end;
@@ -2005,6 +2020,23 @@ begin
aktualisiereAlles;
end;
+function tTransformation.rZDP: tInt64Point;
+begin
+ result:=outZDP;
+end;
+
+procedure tTransformation.wZDP(p: tInt64Point);
+begin
+ if (self is tAgglomeration) then begin
+ if zDP<>p then
+ fehler('Setzen von zDP für Agglomeration nicht erlaubt ( '+tInt64PointToStr(p)+' ≠ '+tInt64PointToStr(zDP)+' )!');
+ exit;
+ end;
+ wmiaExplizit:=true;
+ outZDP:=p;
+ aktualisiereAlles;
+end;
+
function tTransformation.rXSteps: longint;
begin
result:=outXSTS['x'];
@@ -3389,6 +3421,7 @@ begin
fehler('Vorgänger haben verschiedene xSteps oder tSiz, was bei Agglomeration nicht geht!');
inWMia:=vorgaenger[0].wMia;
inPMia:=vorgaenger[0].pMia;
+ inZDP:=int64Point(-1,-1);
for i:=1 to length(vorgaenger)-1 do begin
if inWMia['x'] > vorgaenger[i].wMia['x'] then begin
inWMia['x']:=vorgaenger[i].wMia['x'];
@@ -3519,6 +3552,7 @@ begin
inXSTS:=beliebigerVorgaenger.xStepsTSiz;
inWMia:=beliebigerVorgaenger.wMia;
inPMia:=beliebigerVorgaenger.pMia;
+ inZDP:=beliebigerVorgaenger.zDP;
end;
procedure tDiagonaleAgglomeration.aktualisiereXsTs;