Pregunta

El OpenGL diseñadores fueron nunca tiene miedo de las matemáticas, y los conocimientos de álgebra lineal es esencial para todos, pero la más simple de las aplicaciones OpenGL.Creo que cabe suponer que OpenGL programadores están familiarizados con los ángulos en radianes.

Matemáticamente, los radianes son más elegantes que los grados en todos los aspectos.También tienen ventajas prácticas:

  • La biblioteca estándar de C utilizan radianes.
  • Casi cualquier otra biblioteca de ahí utiliza radianes así.
  • Los radianes son más convenientes en algunos cálculos, por ejemplo,la longitud de un arco circular.

Entonces, ¿por qué el OpenGL diseñadores de decidir especificar funciones como glRotatef y gluPerspective el uso de grados?

(Sé que es de ninguna importancia práctica, y no va a cambiar de todos modos.Tengo curiosidad, y yo no podía encontrar la respuesta en el OpenGL.org.)

¿Fue útil?

Solución

Porque la gente normal son los más utilizados para el cálculo de grados-OpenGL es destinado a ser utilizado simple.Tenga en cuenta que todas las funciones que operan sobre los grados son de "alto nivel" de las funciones.

Para OpenGL en sí, no es ninguna diferencia si se recibe radianes o grados-se convierte internamente a las matrices de transformación de todos modos, así que no hay ningún cálculo de la ganancia de la utilización de uno u otro.

Entonces, ¿por qué complicar las cosas para las personas si se les puede permitir el uso de grados?Nadie la codificación en serio en OpenGL se proporcionan sus propias matrices computated de cuaterniones de todos modos.

En el mismo espíritu que nos podría preguntar, ¿por qué han glRotatef y gluPerspective de todos modos, ya que las matrices son más elegantes en todos los aspectos, y de permitir un mayor grado de control.

Punto por punto:

  • Elegancia - matrices son más elegantes en todos los aspectos
  • C biblioteca C biblioteca utiliza debido a que el cálculo de razones, GL funciones que toman los ángulos no están destinados a ser utilizados para computacional tareas pesadas (el uso de matrices directamente), y, probablemente, la aplicación tiene una tabla de búsqueda para grados de todos modos.
  • cualquier otra biblioteca - C siguiente de la biblioteca por las mismas razones que Clib, también, no es cierto, muchas bibliotecas de C++ permiten una elección, algunos utilizan la última
  • Cálculo conviniency - no importa -- representación interna es de las matrices, los cálculos probablye hecho uso de tablas de búsqueda si pretende ser eficaz-no hay ninguna operación directa en los ángulos, de modo que la representación no importa

También se nota:todas las funciones se utilizan los grados están en el estándar actual (3.2) en desuso. glRotatef es el sólo la función de tomar grados, o como una cuestión de hecho, un ángulo a todos. glu es una librería de utilidades que no son para trabajo pesado de implementación, por lo tanto, es la medida para mejorar la legibilidad, y gluPerspective(... 60.0f..) es mucho más legible y "estándar" en términos de suministro de FOV de gluPerspective( ... M_PI / 3.0f ... ) sería.

Notas finales:

Otros consejos

Yo diría que desde OpenGL fue diseñado con el usuario final en mente, los títulos fueron utilizados porque uno puede especificar ángulos importantes (90, 180, 270 ...) con números enteros solamente, y lo que no hay necesidad de una constante de coma flotante punto GL_PI.

creo que es porque usted debe ser capaz de obtener una matriz de rotación exacta para ciertos ángulos como 90 o 180 grados. Al igual que otras personas aquí ha especificado, si se utiliza pi / 2 en lugar de 90 grados, los errores de redondeo pueden conducir a una matriz de transformación que casi realiza una rotación de 90 grados.

El código es más fácil de leer, que facilita la curva de aprendizaje para los novatos y permite la piratería rápida.

Como ya se dijo - tienen una ventaja grados - los seres humanos son mejor utilizados para grados, comparar: 0,78539816339744830961566084581988 ... a 45 grados, por ejemplo: /.

Para usos avanzados de OpenGL que proporcionan sus propias matrices de todos modos.

Bueno, lo que sucede en la mayoría de los casos es que se utiliza una biblioteca matemática para convertir de radianes a grados y volver a radianes. Estoy de acuerdo con la mayor parte de lo dicho por los anteriores carteles impresionantes.

Es legible más humano.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top