Trigonometrie in C

Vektor

Erfahrenes Mitglied
Hallo!

Ich habe das ein Problem mit den Winkelfunktionen Sinus, Cosinus und Tangens in C. Und zwar will ich eine Konsolenanwendung schreiben die durch die Eingabe des Nutzers automatisch die Gradzahl, den Sinuswert, den Tangenswert und den Cosinuswert des Winkels Alpha ausrechnet. Ich hab mir in meiner Unwissenheit das mal an dem Beispiel Sinus Alpha so vorgestellt.

Nehmen wir mal an a = 4, b = 2 und c = 8.

Wenn ich das manuell ausrechne komme ich auf die 30 Grad.

Wenn ich das aber mit den folgenden Zeilen mache,

s = (a / c);
salpha = asin(s);

komme ich auf den Wert von 0.521.

Ist wahrscheinlich auch ein Verständnissproblem aber ich komm einfach nicht drauf wo der Fehler ist.

Ist es eigentlich auch möglich dass das Programm "erkennt" welche Werte eingegeben wurden und dass es automatisch die fehlenden ausrechnet. Also zum Beispiel dass a, c, und Winkel Alpha angegeben werden und das Programm dann Beta, Gamma und b ausrechnet.

Hoffe ihr könnt mir helfen. Bin totaler Anfänger. Und Danke im vorraus.
 
Zuletzt bearbeitet:
Also mal ganz langsam:
a = 4, b = 2 und c = 8 --> das ist kein rechwinkliges Dreieck ! 4 + 16 != 64, das ist nichtmal ein Dreieck weil a +b < c

Der Wert ist der "RAD" Wert sprich der Wert zwischen 0 und 2*pi.
Benutzt man den Dreisatz hat man auch schnell den Winkel raus:


Winkel = (180/ PI) * arcsin(a/c)

--> Ergo kommen deine 30 Grad raus.

Jeder der in Mathe richtig aufpasst :-) weiß dass es um ein rechtwinkliges Dreieck zu bestimmen reicht 2 Werte zu haben . Aus den 2 Werten lassen sich stets die Katheten , Hypothenuse, Winkel in einem rechtwinkligen Dreieck berechnen

Wenn du damit kein Dreieck definieren wolltest, bitte ich um Verzeichung , aber dass sieht eindeutig danach aus
 
Danke für deine Antwort.

Du hast natürlich recht mit deiner Behauptung dass die Werte kein Dreieck ergeben. Die hab ich mir einfach mal einfallen lassen, da die Hypothenuse eh nicht benötigt wird.

Hab deinen Code jetzt so verarbeitet:

winkelalpha = (180 / Pi) * (acos(b / c));
a = sqrt(pow(c,2) - pow(b,2));
winkelbeta = (180 - (90 + winkelalpha));

und natürlich auf sinus und tangens entsprechend angepasst.

Hat alles super geklappt. Danke.
 
Zurück