kostenloser Webspace werbefrei: lima-city


Arcos Cosinus (VB6)

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    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
  4. Autor dieses Themas

    vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    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
  5. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    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
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!