Winkel berechnen



  • Hallo.
    ich habe zwei geraden (g, h)in einem kosy, die sich schneiden und will jetzt den winkel zwischen g und h berechnen. geht das???

    die eine gerade ist parallel zur x-Achse des kosy's. außerdem habe ich einen punkt P, der auf der anderen gerade liegt.

    /
                *P
               /
              /
    ---------/--------------------- g
            /
           / h
    


  • m=tan(α)m = \tan(\alpha)



  • durch den punkt p kannst du dir die punktsteigungsform der geraden h ausrechnen.
    außerdem gilt: m=tan(α) (α=steigungswinkel der geraden)
    --> also gilt αh-αg
    da aber g parallel zur x achse ist der winkel schon logischer weise einfach nur αh



  • und wie rechne ich den steigungswinkel aus?



  • Hier nochmal die Grundlagen:
    http://ruben.infinite-server.de/vorkurs/html/frame3.2.4.html

    Du weißt jetzt also mit dem Wort Anstieg was anzufangen.
    Er wird mit m bezeichnet und der entspricht in deinem Beispiel auch dem gesuchten Schnittwinkel, da ja die Gerade g || zur X-Achse.

    Den Winkel erhältst du aus dem Anstieg m, indem du die Umkehrfunktion vom Tangens benutzt. Mit tan-1 bezeichnet.
    Also: tan 45° = 1;
    tan-1 1 = 45°



  • Danke, jetzt habe ich es verstanden.



  • ach...
    gibt es in c++ eine funktion für tan-1???
    und ich hab noch ein problem mit den rad und deg.
    wenn ich mit dem taschenrechner tan(45) rechne kommt 1 heraus.
    wenn ich mir jetzt am pc tan(45*(180/3.1415926535897932384)) ausrechnen lasse komme ich aber auf -1.36204

    was mahce ich falsch???



  • nuclearspider schrieb:

    ach...
    gibt es in c++ eine funktion für tan-1???
    und ich hab noch ein problem mit den rad und deg.
    wenn ich mit dem taschenrechner tan(45) rechne kommt 1 heraus.
    wenn ich mir jetzt am pc tan(45*(180/3.1415926535897932384)) ausrechnen lasse komme ich aber auf -1.36204

    was mahce ich falsch???

    Bei Taschenrechner kann man zumeist einstellen, ob man mit Deg oder Rad rechnet, Standard ist Deg.
    Und probir mal tan((45/180)*3.1415926535897932384). arc(α)=α180πarc(\alpha)=\frac{\alpha}{180}*\pi

    btw: Die offizielle Bezeichnungen für die Umkehrungen der trigonometrischen Funktionen lauten arcsin, arccos, arctan etc.
    In C++ werden die wohl entweder so, oder aber asin, acos, atan etc. heißen.



  • Kleiner Tip noch:
    Pi ist für C/C++ schon in der "math.h" Datei als Konstante vordefiniert.
    Musst nur vorher schreiben:

    #define _USE_MATH_DEFINES
    #include "math.h"
    

    Statt 3.14... schreibst du dann einfach M_PI.
    Ist doch etwas übersichtlicher und trozdem noch eine Nachkommastelle genauer als deine Variante 😉

    PS: Der Reziprok 1/Π lautet dann M_1_PI für die Rückrechnung.



  • SeppSchrot schrieb:

    Kleiner Tip noch:
    Pi ist für C/C++ schon in der "math.h" Datei als Konstante vordefiniert.
    Musst nur vorher schreiben:

    #define _USE_MATH_DEFINES
    #include "math.h"
    

    Statt 3.14... schreibst du dann einfach M_PI.
    Ist doch etwas übersichtlicher und trozdem noch eine Nachkommastelle genauer als deine Variante 😉

    PS: Der Reziprok 1/Π lautet dann M_1_PI für die Rückrechnung.

    wenn schon denn schon <cmath>



  • ich hab jetzt aber noch voll des problem:

    float x;
    	x = 45/180;
    	cout << "x = " << x << endl;
    

    Ergebnis: 0!!!!
    (normalerweise sollte da 0.25 rauskommen)

    warum???



  • weil erst der ausdruck 45/180 ausgewertet wird und dann das ergebnis dieser auswertung der variablen x zugeordnet wird. auswertung von 45/180 ist 0, und das wird auch an x zugewiesen.

    du mußt explizit aus einer der zahlen einen gleitkommatyp machen. z.b. mit 45.0 statt 45. dann klappts.



  • ok,
    tan() funktioniert jetzt.
    aber bei atan() kommen trotzdem falsche werte heraus.



  • Kann es sein, daß Du nicht zurückrechnest? Da kommt das Ergebnis auch wieder in Bogenmaß raus. atan(m)*180/M_PI sollte Dein Problem aber beheben.

    MfG Jester


Anmelden zum Antworten