diff options
Diffstat (limited to 'typenunit.pas')
-rw-r--r-- | typenunit.pas | 38 |
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; |