Почему OpenGL использует градусы вместо радианов?

Разработчики OpenGL никогда не боялись математики, и знание линейной алгебры важно для всех кроме самых простых приложений OpenGL. Я думаю, что можно безопасно предположить, что программисты OpenGL знакомы с углами в радианах.

Математически, радианы более изящны, чем градусы во всех отношениях. У них также есть практические преимущества:

  • Стандартная библиотека C использует радианы.
  • В значительной степени любая другая библиотека там использует радианы также.
  • Радианы более удобны в некоторых вычислениях, например, длине круговой дуги.

Да ведь тогда, сделал разработчиков OpenGL, решают определить функции как glRotatef и gluPerspective использовать градусы?

(Я знаю, что это не имеет практического значения, и это не собирается изменяться так или иначе. Мне просто любопытно, и я не мог найти ответ на OpenGL.org.)

68
задан Thomas 27 January 2010 в 12:49
поделиться

4 ответа

Потому что обычные люди больше привыкли к вычислениям степеней -- OpenGL предназначен для простого использования. Обратите внимание, что все функции, которые работают на градусах, являются функциями "высокого уровня".

Для самой OpenGL не имеет значения, принимает она радиан или градус - они все равно внутренне преобразуются в матрицы преобразования, так что нет вычислительного выигрыша от использования той или иной.

Так зачем усложнять людям задачу, если можно позволить им использовать градусы? Любой человек, серьезно кодирующий в OpenGL, в любом случае предоставит свои собственные матрицы, вычисленные из кватернионов.

В том же духе мы могли бы спросить, почему в любом случае glRotatef и gluPerspective, так как матрицы более элегантны во всех отношениях, и позволяют более высокий уровень контроля.

Точка за точкой:

  • Элегантность - матрицы более элегантны во всех отношениях
  • Библиотека C - Библиотека C использует их по вычислительным причинам, функции GL с углами обзора не предназначены для использования в тяжелых вычислительных задачах (используйте матрицы напрямую), и, вероятно, в реализации есть таблица поиска градусов в любом случае.
  • любая другая библиотека - следуя за библиотекой Си по тем же причинам, что и Clib -- также, это неправда -- многие библиотеки Си++ допускают выбор, некоторые используют последнюю
  • Совместимость вычислений - не имеет значения -- внутреннее представление - это матрицы, вычисления, вероятно, производятся с использованием таблиц поиска, если это эффективно -- нет прямой работы с углами, поэтому представление не имеет значения

Также обратите внимание: все функции, использующие углы, в текущем стандарте (3.2) устарели. glRotatef - это функция только , использующая градусы, или вообще угол. glu является утилитной библиотекой, не предназначенной для развертывания в тяжелых условиях, поэтому она ориентирована на читабельность, а gluPerspective(... 60.0f...) намного более читабельная и "стандартная" с точки зрения подачи FOV, чем gluPerspective( ... M_PI / 3.0f... ).

Заключительные примечания:

.
33
ответ дан 24 November 2019 в 14:23
поделиться

Можно использовать запрос GET Location Bucket . Скорее всего, ваше ведро в США.

-121--3171138-

Как насчет использования dojo и dijit ?

Dijit - это быстрый способ создания виджетов и элементов. Он также поставляется с 3 темами по умолчанию, которые легко изменить.

Хороший список различных виджетов здесь

-121--774238-

Код проще в чтении, он облегчает кривую обучения для новичков и позволяет быстро взломать.

Как уже сказано - степени ИМЕЮТ преимущество - люди лучше привыкли к степеням, сравните: 0,78539816339744830961566084581988... до 45 градусов, например :/.

Для расширенного использования OpenGL в любом случае предоставляются собственные матрицы.

3
ответ дан 24 November 2019 в 14:23
поделиться

Ну, что происходит в большинстве случаев, состоит в том, что вы используете математику для преобразования от радианов на градусы и обратно к радианам. Я согласен с большинством того, что было сказано предыдущими удивительными плакатами.

Это больше читаемого человека.

1
ответ дан 24 November 2019 в 14:23
поделиться

Я бы сказал, что поскольку OpenGL был разработан с учетом конечного пользователя, были использованы градусы, потому что можно указать важные углы ( 90 , 180 , 270 ...) только с целыми числами, и поэтому нет необходимости в плавающей точке Constance GL_PI .

13
ответ дан 24 November 2019 в 14:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: