Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#14

AW: Logarithmus Log zu Delphi

  Alt 20. Mär 2019, 08:04
Eventuell führst Du nicht alles in einem Schritt durch, sondern ziehst erst die Wurzel und schaust, ob da ein "ln-taugliches" Ergebnis raus kommt (zumindest mal positiv).

Sherlock
b := (LN(Sqrt(sqr(Spectrum[i1].r) + sqr(Spectrum[i1].i)) + 0.0001) + 9.21034037197618) * q1; In Prinzip kann das ganze nur negativ werden wenn q1 < 0 ist.

Grüße
Klaus
q1 kann keinen negativen wert bekommen.

Delphi-Quellcode:
  i1 := 1;
  q2 := 0;
  q1 := 0;

  case View of

    0:
      begin
        for o := 0 to FOctaveCount - 1 do
        begin
          fl := True;
          q2 := q2 + OctAreaSize;

          i2 := i1 * 2;
          While i1 < i2 do
          begin
            b := round(Sqrt(Spectrum[i1].r * Spectrum[i1].r + Spectrum[i1].i * Spectrum[i1].i));
            if b > 255 then
              b := 255;

            GDIP_SetPenColor(Pen, Palette[round(b)]);

            if MapData[i1].IsLine then
            begin
              if not fl then
              begin
                GDIP_SetPenWidth(Pen, 1);

                fl := True;
                q1 := q1 + 4;
                q2 := q2 + 2;

               GDIP_DrawLine(grSpectrum, Pen, MapData[i1].fa * q1 + Sw,
                 MapData[i1].ta * q1 + Sh, MapData[i1].fa * q2 + Sw,
                 MapData[i1].ta * q2 + Sh);
              end;
            end else
              begin
                if fl then
                begin
                  GDIP_SetPenWidth(Pen, OctAreaSize - 2);
                  fl := False;

                  GDIP_DrawArc(grSpectrum, Pen, Sw - q2, Sh - q2, q2 * 2 - 1, q2 * 2 - 1,
                    MapData[i1].fa, MapData[i1].ta);
                end;
              end;
              i1 := i1 + 1;
          end;
          q1 := q1 + OctAreaSize;
        end;
      end;
gruss
  Mit Zitat antworten Zitat