![]() |
Re: Tangeskurve
Zitat:
Um das abzufangen kann man folgendes machen:
Delphi-Quellcode:
MfG
var x: Integer;//Winkel in Grad
... if (x-90) mod 180 = 0 then begin //Tangens ist an dieser Stelle nicht definiert ... end else begin //Kurve zeichnen end; Binärbaum |
Re: Tangeskurve
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!
Also eine Division schließe ich mal aus, denn dann würde die Fehlermeldung ja "Division by Zero" lauten... Zur Sicherheit hab ich das mal mit folgender Anweisung ausgeschlossen:
Delphi-Quellcode:
Also ich hab die Stelle jetzt:
for x := 0 to Image1.Width do
if cos(x / Image1.Width * Frq.Value * pi) <> 0 then begin y := round(Amp.Value * tan(x / Image1.Width * Frq.Value * pi)); LineTo(x, Image1.Height div 2 - y); end;
Delphi-Quellcode:
Den Wert hab ich noch nicht herausgefunden, aber vielleicht bringt da ja jemand zusammen...
for x := 0 to Image1.Width do
begin y := round(Amp.Value * tan(x / Image1.Width * Frq.Value * pi)); //Hier ist es.... LineTo(x, Image1.Height div 2 - y); end; |
Re: Tangeskurve
Zitat:
Delphi-Quellcode:
heißen...
for x := 1 to Image1.Width - 1
Aber es ist schon so in Ordnung. Denn 1. zeichnet Delphi die Werte trotzdem, und außerdem ist der Wert Image1.Width IMHO noch im Bild. |
Re: Tangeskurve
Zitat:
Ich vermute mal, dass das Ergebnis der Division, wenn 0 schon ausgeschlossen ist, zu groß für den Datentyp wird, und deshalb abgebrochen wird. Du solltest also Divisionen von -0.0...01 bis +0.0...01 ausschließen, und nicht nur 0 selbst. Gruss, Fabian |
Re: Tangeskurve
was ist mit den x-werten, wo tangens unendlich ist (cos(x)=0)! wo filterst du die in deinem code aus?
|
Re: Tangeskurve
Hallo!
Ich hab die FOR - Schleife jetzt Schritt für Schritt nachgerechnet (*g*)... Und bin auch mit meinem TR bei 61 auf eine Polstelle gestoßen... Und siehe da: Bei X = 61 hängt das Programm.... Wieso ist das so? Deswegen: Formel: tan(X / Image1.Width * 4 * Pi) Image1.Width ist 488 Rechengang: tan(X) = sin(X) / cos(x) cos(61 / 488 * 4 * Pi) = 0 Wieso erkennt das mein Programm nicht, wenn ich schreibe:
Delphi-Quellcode:
if cos(X / Image1.Width * 4 * Pi) <> 0
|
Re: Tangeskurve
Zitat:
MfG Binärbaum |
Re: Tangeskurve
Zitat:
Delphi-Quellcode:
for x := 0 to Image1.Width do
begin if cos(x / Image1.Width * 4 * pi) <> 0 then begin y := round(tan(x / Image1.Width * 4 * pi)); LineTo(x, Image1.Height div 2 - y); end; end; |
Re: Tangeskurve
@ibp: Das sind ja die Stellen mit Division durch 0! Die sind raus.
|
Re: Tangeskurve
Weil 0 bei Floats nicht unbedingt genau 0 ist. Du musst eine klitze kleine Spanne um 0 herum abfangen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz