OpenGLの設計者は数学を恐れたことはありません。線形代数の知識は、最も単純なOpenGLアプリケーション以外のすべてに不可欠です。 OpenGLプログラマーがラジアンの角度に慣れていることは間違いないと思います。
数学的には、ラジアンはあらゆる点で度よりもエレガントです。また、実用的な利点もあります。
では、なぜOpenGLの設計者はglRotatef
やgluPerspective
などの関数を指定して度数を使用することにしたのでしょうか。
(私はそれが実用的に重要ではないことを知っています、そしてそれはとにかく変わるつもりはありません。私は興味があるだけで、OpenGL.orgで答えを見つけることができませんでした。)
普通の人は度を計算することに慣れているので-OpenGLは単純に使用されることを意図しています。度で動作するすべての関数は「高レベル」関数であることに注意してください。
OpenGL自体については、ラジアンと度のどちらを受け取っても違いはありません。これらはいずれにしても内部的に変換行列に変換されるため、どちらか一方を使用しても計算上の利点はありません。
では、学位の使用を許可できるのであれば、なぜ人々にとって複雑なことをするのでしょうか? OpenGLで真剣にコーディングしている人なら誰でも、とにかく四元数から計算された独自の行列を提供します。
質問と同じ精神で、なぜglRotatef
とgluPerspective
をとにかく持っているのですか。マトリックスはあらゆる点でよりエレガントで、より高度な制御が可能です。
ポイントごと:
また、注意してください:度を使用するすべての関数は、現在の標準(3.2)で非推奨になっています。 glRotatef
はonly関数であり、度、または実際には角度をとります。 glは、強力なデプロイメント用ではないユーティリティライブラリであるため、可読性に合わせて調整されており、gluPerspective(... 60.0f..)
は、gluPerspective( ... M_PI / 3.0f ... )
になります。
最終メモ:
OpenGLはエンドユーザーを念頭に置いて設計されたため、重要な角度(90
、180
、270
...)を整数で指定できるため、度数が使用されたと思いますだけなので、浮動小数点GL_PI
定数は必要ありません。
90度や180度のような特定の角度で正確な回転行列を取得できるはずだからです。ここで他の人が指定しているように、90度ではなくpi/2を使用すると、丸め誤差によりほぼが90度の回転を実行する変換行列になる可能性があります。
コードは読みやすく、初心者の学習曲線を緩和し、迅速なハッキングを可能にします。
すでに述べたように-度HAVEアドバンテージ-人間は度に慣れているので、0.78539816339744830961566084581988 ...を45度と比較してください。
OpenGLの高度な使用のために、とにかく独自の行列を提供します。
まあ、ほとんどの場合に何が起こるかは、数学ライブラリを使用してラジアンから度に変換し、ラジアンに戻すことです。以前の素晴らしいポスターで言われたことのほとんどに同意します。
より人間が読める形式です。