Поскольку нормальные люди более привыкли к вычислению степеней - OpenGL предназначен для простого использования. Обратите внимание, что все функции, работающие с градусами, являются функциями высокого уровня.
Для самого OpenGL нет разницы, получает ли он радианы или градусы - они все равно внутренне преобразуются в матрицы преобразования, так что нет никакой вычислительной выгоды от использования того или другого.
Так зачем все усложнять людям, если вы можете позволить им использовать степени? Любой, кто серьезно занимается кодированием в OpenGL, в любом случае предоставит свои собственные матрицы, вычисленные из кватернионов.
В том же духе мы могли бы спросить, почему в любом случае есть glRotatef
и gluPerspective
, поскольку матрицы более элегантны во всех отношениях и допускают более высокий уровень контроля.
Точка за точкой:
- Элегантность - матрицы более элегантны в каждом аспекте
- Библиотека C - библиотека C использует их по вычислительным причинам, функции GL, принимающие углы, не предназначены для сложных вычислительных задач (напрямую используют матрицы), и, вероятно, реализация в любом случае имеет таблицу поиска степеней.
- любая другая библиотека - следующая за библиотекой C по тем же причинам, что и Clib - также, это не соответствует действительности - многие библиотеки C ++ допускают выбор, некоторые используют последнюю
- Удобство вычислений - не имеет значения - внутреннее представление - это матрицы, вычисления, вероятно, выполняются с использованием справочных таблиц, если они должны быть эффективными - нет прямой операции с углами, поэтому представление не имеет значения
Также обратите внимание : все функции, использующие градусы, в текущем стандарте (3.2) устарели. glRotatef
- это функция only , принимающая градусы или, вообще говоря, угол. glu - это служебная библиотека, не предназначенная для развертывания в тяжелых условиях, поэтому она ориентирована на удобочитаемость, а gluPerspective(... 60.0f..)
гораздо более читабелен и "стандартен" с точки зрения предоставления FOV, чем gluPerspective( ... M_PI / 3.0f ... )
.
Заключительные ноты: