70

OpenGL の設計者は数学を恐れることはありませんでした。最も単純な OpenGL アプリケーションを除いて、線形代数の知識は不可欠です。OpenGL プログラマーはラジアン単位の角度に精通していると考えて差し支えないと思います。

数学的には、ラジアンはあらゆる点で度よりもエレガントです。また、実用的な利点もあります。

  • C 標準ライブラリはラジアンを使用します。
  • 他のほとんどのライブラリも同様にラジアンを使用しています。
  • 円弧の長さなど、一部の計算ではラジアンの方が便利です。

では、なぜ OpenGL の設計者は次のような関数を指定しglRotatefgluPerspective次数を使用することにしたのでしょうか?

(実際には重要ではないことはわかっていますし、今後も変わることはありません。ただ興味があるだけで、OpenGL.org で答えを見つけることができませんでした。)

4

5 に答える 5

31

普通の人は度の計算に慣れているので、OpenGLは単純に使用することを目的としています。度で動作するすべての関数は「高レベル」関数であることに注意してください。

OpenGL自体の場合、ラジアンを受け取るか度を受け取るかは違いはありません。いずれにせよ、それらは内部で変換行列に変換されるため、どちらか一方を使用しても計算上の利点はありません。

では、学位を使用して許可できるのであれば、なぜ人々のことを複雑にするのでしょうか。OpenGLで真剣にコーディングする人は誰でも、とにかくクォータニオンから計算された独自の行列を提供します。

同じ精神で、マトリックスはあらゆる点でよりエレガントであり、より高度な制御を可能にするので、なぜ持っているのかglRotatef、とにかく持っているのかを尋ねることができます。gluPerspective

ポイントごと:

  • エレガンシー-マトリックスはあらゆる面でよりエレガントです
  • Cライブラリ-Cライブラリは計算上の理由でそれらを使用します。角度をとるGL関数は、計算の重いタスク(行列を直接使用する)に使用することを意図していません。おそらく、実装には度のルックアップテーブルがあります。
  • 他のライブラリ-Clibと同じ理由でCライブラリに続く-また、それは真実ではありません-多くのC ++ライブラリは選択を許可し、一部は後者を使用します
  • 計算の利便性-重要ではありません-内部表現は行列です。効率を上げるためにルックアップテーブルを使用して計算を行う可能性があります-角度を直接操作する必要がないため、表現は重要ではありません

また、次の点にも注意してください。度を使用するすべての関数は、現在の標準(3.2)で非推奨になっています。glRotatef度をとる唯一の関数、または実際には角度をとる関数です。gluは、ヘビーデューティー展開用ではないユーティリティライブラリであるため、読みやすさに合わせて調整されており、gluPerspective(... 60.0f..)FOVの提供に関しては、はるかに読みやすく「標準」gluPerspective( ... M_PI / 3.0f ... )です。

最後の注意:

于 2010-01-27T12:54:59.210 に答える
13

OpenGL はエンド ユーザーを念頭に置いて設計されているため、重要な角度 ( 90180、 ...) を整数のみで指定できるため、度数が使用され、浮動小数点定数270は必要ありません。GL_PI

于 2010-01-27T13:01:27.660 に答える
6

90度や180度などの特定の角度で正確な回転行列を取得できるはずだからだと思います。ここで他の人が指定しているように、90度の代わりにpi / 2を使用すると、丸め誤差により、ほぼ90度の回転を実行する変換行列が発生する可能性があります。

于 2011-02-24T00:27:05.887 に答える
4

コードは読みやすく、初心者の学習曲線を緩和し、迅速なハッキングを可能にします。

すでに述べたように - 度数には利点があります - 人間は度数に慣れているため、0.78539816339744830961566084581988... を 45 度と比較してください。

OpenGL を高度に使用するには、とにかく独自の行列を提供します。

于 2010-01-27T13:09:22.937 に答える
1

ほとんどの場合、Math ライブラリを使用してラジアンから度に変換し、ラジアンに戻します。以前のすばらしいポスターのほとんどに同意します。

より人間が読めるようになっています。

于 2010-01-27T13:11:29.190 に答える