Domanda

OpenGL progettisti erano mai paura della matematica, e la conoscenza dell'algebra lineare è essenziale per tutti, ma il più semplice le applicazioni OpenGL.Penso che si può tranquillamente presumere che le OpenGL sono i programmatori familiarità con gli angoli in radianti.

Matematicamente, radianti sono più eleganti di gradi in ogni rispetto.Essi hanno anche vantaggi pratici:

  • La libreria standard C utilizza radianti.
  • Praticamente qualsiasi altra biblioteca c'utilizza radianti come bene.
  • Radianti sono più convenienti in alcuni calcoli, ad es.la lunghezza di un arco circolare.

Perché, allora, l'OpenGL designer decide di specificare le funzioni come glRotatef e gluPerspective per utilizzare i gradi?

(So che è di nessuna importanza pratica, e non cambierà comunque.Sono solo curioso, e non riuscivo a trovare la risposta OpenGL.org.)

È stato utile?

Soluzione

Perché le persone normali sono più utilizzati per il calcolo dei gradi -- OpenGL è pensato per essere utilizzato semplice.Nota che tutte le funzioni che operano su di gradi di "alto livello" funzioni.

Per OpenGL è alcuna differenza se si riceve radianti o gradi-sono convertita internamente le matrici di trasformazione in ogni caso, quindi non c'è nessun computazionale vantaggio di usare uno o l'altro.

Perché complicare le cose per la gente, se è possibile consentire loro l'utilizzo di gradi?Chiunque codifica seriamente in OpenGL, potranno fornire il loro matrici computated da quaternioni comunque.

Con lo stesso spirito, ci si potrebbe chiedere, perché hanno glRotatef e gluPerspective comunque, dato che le matrici sono più elegante in ogni rispetto, e consentire un elevato grado di controllo.

Punto per punto:

  • Eleganza - matrici sono più eleganti in ogni aspetto
  • Libreria C - C biblioteca li usa a causa di motivi computazionali, GL funzioni angoli non sono destinati ad essere utilizzati per computazionale attività pesanti (utilizzare matrici direttamente), e, probabilmente, la realizzazione di una tabella di ricerca per gradi, comunque.
  • qualsiasi altra libreria - a seguito della libreria C per le stesse ragioni Clib -- inoltre, è falso, molte librerie C++ consentire una scelta, un certo uso di quest'ultimo
  • Calcolo conviniency - non importa -- rappresentazione interna è matrici, calcoli probablye fatto utilizzando le tabelle di riferimento, se vuole essere efficace, non c'è il funzionamento diretto angoli, in modo che la rappresentazione non importa

Anche nota:tutte le funzioni usando i gradi sono nella norma vigente (3.2) obsoleto. glRotatef è il solo funzione prendendo gradi, o come una questione di fatto, in un angolo, a tutti. glu è una libreria di utilità non destinati al pesante di distribuzione, quindi è su misura verso la leggibilità, e gluPerspective(... 60.0f..) è molto più leggibile e "standard" in termini di approvvigionamento di FOV gluPerspective( ... M_PI / 3.0f ... ) vorresti essere.

Note finali:

Altri suggerimenti

Direi che dal OpenGL è stato progettato con l'utente finale in mente, i gradi sono stati utilizzati perché si può specificare angoli importanti (90, 180, 270 ...) con numeri interi solo, e quindi non c'è alcuna necessità di un costante punto GL_PI mobile.

Credo che sia perché si dovrebbe essere in grado di ottenere una matrice precisa di rotazione per certi angoli, come 90 o 180 gradi. Come altre persone qui ha specificato, se si utilizza pi / 2 invece di 90 gradi, errori di arrotondamento possono portare a una matrice di trasformazione che quasi esegue una rotazione di 90 gradi.

Codice è più facile da leggere, facilita curva di apprendimento per i neofiti e permette di hacking rapida.

Come detto già - gradi presenta il vantaggio - gli esseri umani sono meglio utilizzati per gradi, confrontare: 0,78539816339744830961566084581988 ... a 45 gradi, per esempio: /.

Per usi avanzati di OpenGL di fornire il vostro matrici in ogni caso.

Bene, ciò che accade nella maggior parte dei casi è che si utilizza una libreria matematica convertire da radianti a gradi e di nuovo a radianti. Sono d'accordo con la maggior parte di quanto è stato detto dai precedenti manifesti impressionante.

E 'più leggibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top