From 6dd6c3c8a88ced69c93b7c9fad96be539b11b70d Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Mon, 30 Sep 2019 13:14:56 +0200 Subject: werteunit.pas: findeZweitdominantestenPunkt(): Ausblenden der Mitte nun optional --- epostunit.pas | 6 +++--- werteunit.pas | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/epostunit.pas b/epostunit.pas index fda8aa9..7010500 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -7391,11 +7391,11 @@ begin case genauigkeit of gSingle: - sWerte.findeZweitdominantestenPunkt(xMin,xMax,tMin,tMax,xFak,tFak,p); + sWerte.findeZweitdominantestenPunkt(xMin,xMax,tMin,tMax,xFak,tFak,false,p); gDouble: - dWerte.findeZweitdominantestenPunkt(xMin,xMax,tMin,tMax,xFak,tFak,p); + dWerte.findeZweitdominantestenPunkt(xMin,xMax,tMin,tMax,xFak,tFak,false,p); gExtended: - eWerte.findeZweitdominantestenPunkt(xMin,xMax,tMin,tMax,xFak,tFak,p); + eWerte.findeZweitdominantestenPunkt(xMin,xMax,tMin,tMax,xFak,tFak,false,p); end{of case}; _zDP:=p; diff --git a/werteunit.pas b/werteunit.pas index d647a00..46a62c7 100644 --- a/werteunit.pas +++ b/werteunit.pas @@ -75,7 +75,7 @@ type procedure holeRAM(ausgaben: byte; gemaeszTXMinMax: boolean); inline; overload; procedure gibMinMaxDichten(out wMi,wMa: extended; out pMi,pMa: tInt64Point; out mMi,mMa: boolean; xMin,xMax,tMin,tMax: longint); function zuPixelWerten(wHoehe,wBreite,xPMi,xMi,tMi: longint; xZ,yZ: extended; mo: boolean; pPWerte: pTExtendedArray; pPAnzahlen: pTLongintArray): boolean; - procedure findeZweitdominantestenPunkt(xMi,xMa,tMi,tMa: longint; xFak,yFak: extended; out maxPos: tInt64Point); + procedure findeZweitdominantestenPunkt(xMi,xMa,tMi,tMa: longint; xFak,yFak: extended; ignoriereMitte: boolean; out maxPos: tInt64Point); function findeSchwellwerte(xMi,xMa,tMi,tMa: longint; Schw: extended): tExtPointArray; procedure integriere(qu: pTLLWerteSingle; xMi,xMa,tMi,tMa,xOf,tOf: longint; richtung: tIntegrationsRichtung); overload; procedure integriere(qu: pTLLWerteDouble; xMi,xMa,tMi,tMa,xOf,tOf: longint; richtung: tIntegrationsRichtung); overload; @@ -1509,7 +1509,7 @@ begin result:=true; end; -procedure tLLWerte.findeZweitdominantestenPunkt(xMi,xMa,tMi,tMa: longint; xFak,yFak: extended; out maxPos: tInt64Point); +procedure tLLWerte.findeZweitdominantestenPunkt(xMi,xMa,tMi,tMa: longint; xFak,yFak: extended; ignoriereMitte: boolean; out maxPos: tInt64Point); var maxima: tInt64PointArray; mCnt,i,iM,iP,j,jM,jP: int64; @@ -1532,8 +1532,9 @@ begin (wert > werte[i+jM*params.xSteps]) and (wert > werte[iP+j*params.xSteps]) and (wert > werte[i+jP*params.xSteps]) and - (2*i<>params.xSteps) and - (2*j<>params.tSiz) then begin + (not ignoriereMitte or + ((2*i<>params.xSteps) and + (2*j<>params.tSiz))) then begin if length(maxima)<=mCnt then setLength(maxima,length(maxima)+1024); maxima[mCnt]['x']:=i; @@ -1562,7 +1563,7 @@ begin break; end; end; - if (i=0) or (minWert>maxWert) then begin + if (i=0) or (i=1) or (minWert>maxWert) then begin maxWert:=minWert; maxPos:=maxima[i]; end; @@ -2114,6 +2115,7 @@ begin betraege.params.tSiz div 2 + 1, xFak, yFak, + true, maxPos ); -- cgit v1.2.3-70-g09d2