Frage

Die OpenGL-Designer waren nie der Mathematik Angst und Kenntnisse der linearen Algebra ist wichtig für alle, aber die einfachsten OpenGL-Anwendungen. Ich denke, es ist sicher davon ausgegangen werden kann, dass OpenGL-Programmierer vertraut sind mit Winkeln im Bogenmaß.

Mathematisch Radiant ist eleganter als Grad in jeder Hinsicht. Sie haben auch praktische Vorteile:

  • Die C-Standardbibliothek verwendet Radiant.
  • So ziemlich jede andere Bibliothek da draußen verwendet Radiant als auch.
  • Radiant ist bequemer in einigen Berechnungen, z.B. die Länge eines Kreisbogens.

Na, dann haben Sie sich entschieden die OpenGL Designer Funktionen wie glRotatef und gluPerspective zu verwenden Grad angeben?

(ich weiß, dass es keine praktische Bedeutung, und es wird sowieso nicht ändern. Ich bin nur neugierig, und ich konnte die Antwort auf OpenGL.org nicht finden.)

War es hilfreich?

Lösung

Da normale Menschen mehr verwendet werden Grad zur Berechnung - OpenGL ist dafür gedacht, einfach zu sein. Beachten Sie, dass alle Funktionen, die auf Grad sind „high level“ -Funktionen.

betreiben

Für OpenGL selbst, es gibt keinen Unterschied, ob es Radianten oder Grad empfängt - sie werden intern ohnehin Transformationsmatrizen umgewandelt, so gibt es keinen rechnerischen Gewinn der eine oder den anderen mit

.

Warum also kompliziert Sachen für Leute, wenn Sie können ihnen Grad unter Verwendung zulassen? Wer ernsthaft in OpenGL-Codierung wird ihre eigenen Matrizen ohnehin computated von Quaternionen liefern.

In diesem Sinne bitten wir konnten, warum glRotatef und gluPerspective sowieso haben, da Matrizen elegantere in jeder Hinsicht sind, und einen höheren Grad an Kontrolle ermöglichen.

Punkt für Punkt:

  • Elegancy - Matrizen sind elegant in jeder Hinsicht
  • C-Bibliothek - C-Bibliothek verwendet sie wegen der rechentechnischen Gründen GL Funktionen Winkel nehmen nicht für Rechen schwere Aufgaben (Verwendung Matrizen direkt) verwendet sein soll, und wahrscheinlich die Umsetzung hat für Grad eine Lookup-Tabelle sowieso
  • andere Bibliothek - folgende C-Bibliothek aus den gleichen Gründen wie Clib - auch, es ist nicht wahr - viele C ++ Bibliotheken erlauben, eine Wahl, einige nutzen diese
  • Berechnung conviniency - spielt keine Rolle - interne Darstellung Matrizen ist, probablye Berechnungen durchgeführte Tabellen-Lookup, wenn gemeint effizient zu sein - dort auf Winkel kein direkter Betrieb ist, so Darstellung keine Rolle,

Auch Notiz : alle Funktionen mit Grad sind im aktuellen Standard (3.2) veraltet. glRotatef ist die nur Funktion nimmt Grad oder als in der Tat einen Winkel überhaupt. glu ist ein Utility-Bibliothek nicht für den schweren Einsatz gemeint, daher ist es auf Lesbarkeit zugeschnitten und gluPerspective(... 60.0f..) ist viel besser lesbar und „Standard“ in Bezug auf die FOV liefert als gluPerspective( ... M_PI / 3.0f ... ) wäre.

Schluss Hinweise:

Andere Tipps

Ich würde sagen, dass OpenGL da mit dem End-Anwender entwickelt wurde, stark genutzt wurden, weil ein wichtigen Winkel angeben (90, 180, 270 ...) mit nur ganzen Zahlen, und so gibt es keine Notwendigkeit für eine Gleitkomma GL_PI konstant.

Ich denke, es liegt daran, dass Sie eine genaue Rotationsmatrix für bestimmte Winkel wie 90 oder 180 Grad erhalten können sollen. Wie hier andere Menschen haben angegeben, wenn Sie pi / 2 anstelle von 90 Grad zu verwenden, Rundungsfehler zu einer Transformationsmatrix führen kann, dass fast führt eine Drehung um 90 Grad.

-Code ist einfacher zu lesen, ist es für Anfänger Lernkurve erleichtert und ermöglicht eine schnelle Hacking.

Wie bereits erwähnt - Grad Vorteil hat - Menschen sind besser Grad verwendet, zu vergleichen: 0,78539816339744830961566084581988 ... bis 45 Grad zum Beispiel: /.

Für fortgeschrittene Anwendungen von OpenGL Sie geben Sie Ihre eigenen Matrizen trotzdem.

Nun, was in den meisten Fällen passiert, ist, dass Sie eine Math-Bibliothek zu konvertieren von Radiant in Grad und zurück zu Radiant verwenden. Ich stimme mit den meisten von dem, was von den vorherigen ehrfürchtigen Plakaten gesagt wurde.

Es ist mehr Menschen lesbar.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top