Arcos Cosinus (VB6)
lima-city → Forum → Programmiersprachen → Basic
akzeptiert winkel
algorithmus
code
double
funktion
genauigkeit
grad
knick
landen
machen
optik
rechtwinkligen dreiecks
richtigen winkel
rundung
suchen
treffen
umrechnung
verwechseln
winkel
zahl
-
Ich sitze gerade daran eine ArcCos-Funktion zu programmieren, aber irgendwie funzt das vorne und hinten nicht.
VB akzeptiert Winkel ya nur in Radiant, habe auch alles sauber umgerechnet.
Mein Code sieht im Moment wie folgt aus:
Private Function ArcCos3(A As Double) As Double Dim Winkel As Double, Genauigkeit As Double, Step As Double Genauigkeit = 4 Step = 10 ^ (-Genauigkeit) Winkel = -1 - Step Do DoEvents Winkel = Winkel + Step If Round(Cos(Winkel), Genauigkeit) = Round(A, Genauigkeit) Then Exit Do Loop ArcCos3 = Winkel End Function
Wie ihr seht, "sucht" der Algorithmus einfach nach dem richtigen Winkel, mit einer Genauigkeit von momentan 4 Nachkommastellen. zweifelsohne muss der algorithmus also irgendwann auf den richtigen Winkel treffen, oder in der unendlichkeit landen (was durch die Rundung allerdings unmöglich ist.)
Nur irgendwie bekomme ich da nur wirre Werte raus. Wenn ich yetz zB -0,064820372355216 in Radiant umrechne, dann macht das nach meiner Rechnung:
-0,064820372355216 * Pi / 180 = -1,13132892
So, mein Taschenrechner spuckt aus: 90,06° (was - denke ich mal - richtig ist)
Der Algorithmus spuckt aber den hier aus: 1,57"
Da kann doch irgdendwas nicht stimmen ?
Wir ihr seht, ist das schon der 3. Versuch, eine ArcCos-Funktion zu schreiben (die Winkel in Grad° Akzeptiert), aber ich kriege es einfach nicht hin. Wäre nett, wenn ihr mir auf die Sprünge helft.
Edit: Ok, sry ich hatte schon irgendwie nen Knick in der Optik und hab teilweise weiterhin meine ArcCos2-Funktion benutzt. Ich lass es einfach mal stehen und wer ne funktionierende ArcCos-Funktion braucht, der hat nun eine. ^^
Liebe Grüße
- VampireSilence
Beitrag zuletzt geändert: 12.3.2009 23:02:51 von vampiresilence -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Manchmal ist es doch ganz praktisch, in die Hilfe von VB zu schauen:
"Abgeleitete mathematische Funktionen" Funktion Abgeleitete Äquivalenten Sekans Sekans(X) = 1 / Cos(X) Kosekans Kosekans(X) = 1 / Sin(X) Kotangens Kotangens(X) = 1 / Tan(X) Arkussinus Arkussinus(X) = Atn(X / Sqr(-X * X + 1)) Arkuskosinus Arkuskosinus(X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1) Arkussekans Arkussekans(X) = Atn(X / Sqr(X * X – 1)) + Sgn((X) – 1) * (2 * Atn(1)) Arkuskosekans Arkuskosekans(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1)) Arkuskotangens Arkuskotangens(X) = Atn(X) + 2 * Atn(1)
Das Ergebnis für das Bogenmaß liegt im Bereich von -Pi/2 bis Pi/2.
Zur Umrechnung von Grad in das Bogenmaß muss die Gradangabe mit Pi/180 multipliziert werden.
Zur Umrechnung von Bogenmaß in Grad muss das Bogenmaß mit 180/Pi multipliziert werden.
Somit kannst du dir nun deine Funktion für den ArcCos basteln:
Private Function ArcCos(ByVal r As Double) As Double ArcCos = Atn(-r / Sqr(-r * r + 1)) + 2 * Atn(1) End Function
-
Stimmt, das wäre wirklich hilfreich gewesen, aber bei mir kommt dann nur ne Meldung "MSDN does not exist.".
Was macht denn diese Atn()-Funktion eigtl ?
Liebe Grüße
- VampireSilence -
vampiresilence schrieb:
Was macht denn diese Atn()-Funktion eigtl ?
Auszug:
MSDN, "Atn-Funktion"
Atn() gibt einen Wert vom Typ Double zurück, der den Arkustangens einer Zahl angibt.
Die Atn-Funktion berechnet das Verhältnis zweier Seiten eines rechtwinkligen Dreiecks (Zahl) und gibt den zugehörigen Winkel im Bogenmaß zurück. Das Verhältnis ist die Länge der dem Winkel gegenüberliegenden Seite dividiert durch die Länge der Seite, die am Winkel anliegt.
Atn ist die Umkehrfunktion der trigonometrischen Funktion Tan, die einen Winkel als Argument erhält und das Verhältnis der beiden Seiten eines rechtwinkligen Dreieck zurückgibt. Verwechseln Sie Atn nicht mit dem Kotangens, der dem Kehrwert des Tangens (1/Tangens) entspricht.
Beitrag zuletzt geändert: 12.3.2009 23:32:45 von cbhp -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage