Umwandlung von Bogenmaß in Grad
Ich bin den Aufbau einer kleinen Physik-engine und ich habe Probleme, meine Umwandlung Radiant Wert in Grad mit atan
wie muss ich einen Winkel, um die Ausgabe in Grad nur.
Erstens, ich habe eine x
und y
Wert, und ich finden müssen, die einen Winkel mit atan
, so dass ich Teile von y nach x wie folgt:
angleDivide = yN / xN;
Dann, bevor dieser Wert in tan
ich Versuch es zu konvertieren in Grad, so:
angleToDegrees = angleDivide * (3.14 / 180);
Dann habe ich Platz angleToDegrees in atan
:
angle = atan(angleToDegrees);
Aber wenn ich die Anzeige angle
ich bin, noch immer radian Werte.
Bitte könnten Sie mir sagen, was ist Los mit meinem code und wie man dieses Problem beheben?
Das ist eine entsetzlich schlechte Näherung an pi. Erste verwenden Sie
Ähm... Erstens, dein text sagt, dass Sie wollen, stellen Sie den Wert in
M_PI
wenn es definiert ist, bitte, oder sonst definieren, die es zu LDBL_DIG_10
Ziffern Genauigkeit. Second, sollten Sie die Umwandlung der Ausgabe atan()
von Rad zu Grad, nicht der input (das ist nur ein Hang). Dritte verwenden, sollten Sie atan2(y,x)
und nicht atan(y/x)
.Ähm... Erstens, dein text sagt, dass Sie wollen, stellen Sie den Wert in
tan
, aber der code wird dann verwendet es in atan
. So ist es für tan
oder für atan
? Make up your mind. Zweitens, wenn dies für die atan
, warum sind Sie dann zu konvertieren? Das argument der atan
ist nicht in einem Winkel. Es ist Tangens-Wert. Tangente ist weder "Bogenmaß" noch "Grad". Tangente ist einheitenlosen Wert. Konvertieren von "radians zu Grad" für etwas, das nicht einen Winkel macht keinen Sinn überhaupt. Es ist die Ergebnisatan
, möchten Sie vielleicht in Grad umrechnen. Das Ergebnis, nicht das argument.InformationsquelleAutor Lucy Loo | 2016-11-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie berechnen möchten
radians=tan(y/x)
ersten.Dann können Sie es konvertieren in Grad:
Sehen die Referenz hier für atan:
On a side note, Sie haben auch zu berücksichtigen, was-Quadranten-Sie bekommen die richtige Antwort (seit
-y/x
ist die gleiche Nummer wiey/-x
)atan2(y,x)
existiert.Das funktioniert perfekt, danke! Nur eine Frage, meine Werte kommen als "38.7464', was natürlich ist ein Studium Wert, aber gibt es eine Möglichkeit, ich kann, verkürzen sich die Nachkommastellen?
buf[64]; sprintf(buf, "%.1f", Grad); Grad = strtod(buf, 0);
Sollten Sie wirklich ändern
3.14
etwas mehr Dezimalstellen,Ich bearbeitete die Antwort hinzufügen mehr Nachkommastellen. Ich Frage mich, warum meine Rechnung ab, die von 0.04 Grad!
InformationsquelleAutor anthonybell