(Gast)
n/a Beiträge
|
AW: Logarithmus Log zu Delphi
20. Mär 2019, 09: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
|
|
Zitat
|