Benutzer mit den meisten Antworten
Winkelberechnung fehlerhaft

Frage
-
Ich benötige den Sinuswinkel eines gleichschenkligen Dreiecks.
Zu Testzwecken benutze ich die länge 10 (Kathete und Ankathete).
Dies ergiebt mit der Formel Sqrt(Pow(10,2)+Pow(10,2)) eine Hypotenuse von (double) 14.142135623730951
Der Winkel mit der Formel Sin(10/ Sqrt(Pow(10,2)+Pow(10,2))) ergibt (double) 0.64963693908006237, was umgerechnet Asin(0.64963693908006237) / PI * 180 ein Winkel von 40.514234227069771° ergiebt.
Um jedoch ein Winkel von 45° zu erreichen sollte Sin(10/ Sqrt(Pow(10,2)+Pow(10,2))) jedoch (double) 0.70710678118654749 ergeben.
private static double GetAngle(double a, double b) { // a und b entsprechen jeweils 10D return Asin(Sin(Pow(a, 1) + Pow(b, 2))) / PI * 180; // Resultat = 40.514234227069771° an Stelle von 45° }
Kann mir jemand sagen, wo der Fehler liegt. Liebe grüsse Alex
Antworten
-
Moregen Peter
Ich glaube wir sprechen an einander vorbei. Wenn ich ein Dreieck mit den Kantenlängen von 10 habe und der Gammawinkel immer 90° ist müssen der Alpa- sowie der Betawinkel doch je 45° ergeben. Das von dir vorgezeigte Rechenmodel kommt jedoch auf 53,130102354156°
Nun habe ich die Lösung selbst gefunden:
double angle = (180 / PI) * Atan2(a, b); = 45°
Ich Danke euch beiden um die Mühe die ihr euch genommen habt.
Liebe Grüsse Alex
- Als Antwort markiert Alex Feuz Samstag, 18. Januar 2020 08:06
Alle Antworten
-
Hi,
entweder ist Deine Beschreibung falsch oder Dein Algorithmus. Hier mal die Berechnung des Winkels zwischen den Schenkeln eines gleichschenkligen Dreiecks:/// <summary> /// Berechnen des Winkels eines gleichschenkligen Dreiecks /// </summary> /// <param name="a">Schenkellänge</param> /// <param name="b">Länge der Basis</param> /// <returns>Winkel zwischen den Schenkeln in Grad (360 Grad Kreis)</returns> private static double GetAngle(double a, double b) { // a und b entsprechen jeweils 10D // return Asin(Sin(Pow(a, 1) + Pow(b, 2))) / PI * 180; // Resultat = 40.514234227069771° an Stelle von 45° - falsch return (360 / Math.PI) * Math.Asin(b / (2 * a)); // Ergebnis muss sein 60 DEG bei a=10 und b=10 }
--
Best Regards / Viele Grüße
Peter Fleischer (former MVP for Developer Technologies)
Homepage, Tipps, Tricks- Bearbeitet Peter Fleischer Sonntag, 19. Januar 2020 10:59 Code korrigiert.
-
Moregen Peter
Ich glaube wir sprechen an einander vorbei. Wenn ich ein Dreieck mit den Kantenlängen von 10 habe und der Gammawinkel immer 90° ist müssen der Alpa- sowie der Betawinkel doch je 45° ergeben. Das von dir vorgezeigte Rechenmodel kommt jedoch auf 53,130102354156°
Nun habe ich die Lösung selbst gefunden:
double angle = (180 / PI) * Atan2(a, b); = 45°
Ich Danke euch beiden um die Mühe die ihr euch genommen habt.
Liebe Grüsse Alex
- Als Antwort markiert Alex Feuz Samstag, 18. Januar 2020 08:06
-
Hi Alex,
ein Dreieck mit gleich langen Kantenlängen kann keinen Winkel 90° haben. Da sind alle Winkel gleich 60 Grad. Bei einem gleichschenkligen Dreieck mit einem Winkel von 90 ° zwischen den Schenkeln ist die Länge der Basisseite (gegenüber dem 90°-Winkel) gleich Schenkellänge mal Wurzel aus zwei (1,414).Ich habe meinen Code korrigiert, da er falsch war.
--
Best Regards / Viele Grüße
Peter Fleischer (former MVP for Developer Technologies)
Homepage, Tipps, Tricks
- Bearbeitet Peter Fleischer Sonntag, 19. Januar 2020 11:14 Info zu Codekorrektur