gpt4 book ai didi

opengl - 为什么 OpenGL 使用度数而不是弧度?

转载 作者:行者123 更新时间:2023-12-02 08:21:25 25 4
gpt4 key购买 nike

OpenGL 设计者从不害怕数学,线性代数知识对于除了最简单的 OpenGL 应用程序之外的所有应用程序都是必不可少的。我认为可以放心地假设 OpenGL 程序员熟悉以弧度表示的角度。

从数学上来说,弧度在各方面都比度数更优雅。它们还具有实际优势:

  • C 标准库使用弧度。
  • 几乎所有其他库也使用弧度。
  • 弧度在某些计算中更方便,例如圆弧的长度。

那么,为什么 OpenGL 设计者决定指定 glRotatefgluPerspective 等函数来使用度数呢?

(我知道这没有实际意义,而且无论如何也不会改变。我只是很好奇,而且我在 OpenGL.org 上找不到答案。)

最佳答案

因为普通人更习惯计算度数——OpenGL 就是为了简单使用而设计的。请注意,所有对度数进行操作的函数都是“高级”函数。

对于 OpenGL 本身来说,无论接收弧度还是度数都没有区别——它们无论如何都会在内部转换为变换矩阵,因此使用其中之一不会带来计算增益。

如果你可以允许人们使用学位,为什么还要让他们的事情变得复杂呢?无论如何,任何认真使用 OpenGL 进行编码的人都会提供他们自己的由四元数计算得出的矩阵。

本着同样的精神,我们可以问,既然矩阵在各个方面都更优雅,并且允许更高级别的控制,为什么还要有 glRotatefgluPerspective 呢。

逐点:

  • 优雅 - 矩阵在各个方面都更加优雅
  • C 库 - C 库使用它们是因为计算原因,GL 函数取角度并不意味着用于计算繁重的任务(直接使用矩阵),并且无论如何实现可能都有一个度数查找表。
  • 任何其他库 - 遵循 C 库的原因与 Clib 相同 - 而且,这是不正确的 - 许多 C++ 库允许选择,有些使用后者
  • 计算便利性 - 无关紧要 - 内部表示是矩阵,如果要高效,计算可能使用查找表完成 - 没有对角度的直接操作,因此表示并不重要

另请注意:所有使用度数的函数在当前标准 (3.2) 中均已弃用。 glRotatef唯一获取度数(或者事实上,获取角度)的函数。 glu 是一个实用程序库,不适合重型部署,因此它是针对可读性而定制的,并且 gluPerspective(... 60.0f..) 更具可读性,并且“就提供 FOV 而言,“标准”比 gluPerspective( ... M_PI/3.0f ... ) 更好。

最后的注释:

关于opengl - 为什么 OpenGL 使用度数而不是弧度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com