The OpenGL designers were never afraid of mathematics, and knowledge of linear algebra is essential for all but the simplest OpenGL applications. I think it can safely be assume
Well, what happens in most cases is that you use a Math library to convert from radians to degrees and back to radians. I agree with most of what was said by the previous awesome posters.
It's more human readable.
Because normal people are more used to calculating degrees -- OpenGL is meant to be used simple. Note that all the functions that operate on degrees are "high level" functions.
For OpenGL itself, it's no difference whether it receives radians or degrees -- they are internally converted to transformation matrices anyway, so there's no computational gain of using one or the other.
So why complicate stuff for people if you can allow them using degrees? Anyone coding seriously in OpenGL will provide their own matrices computated from quaternions anyway.
In the same spirit we could ask, why have glRotatef
and gluPerspective
anyway, since matrices are more elegant in every respect, and allow a higher grade of control.
Point by point:
Also note: all of the functions using degrees are in the current standard (3.2) deprecated. glRotatef
is the only function taking degrees, or as a matter of fact, an angle at all. glu is a utility library not meant for heavy-duty deployment, hence it's tailored towards readability, and gluPerspective(... 60.0f..)
is much more readable and "standard" in terms of supplying FOV than gluPerspective( ... M_PI / 3.0f ... )
would be.
Final notes:
I'd say that since OpenGL was designed with the end-user in mind, degrees were used because one can specify important angles (90
, 180
, 270
...) with integers only, and so there is no need for a floating point GL_PI
constant.
Code is easier to read, it eases learning curve for newbies and allows quick hacking.
As stated already - degrees HAVE advantage - humans are better used to degrees, compare: 0.78539816339744830961566084581988... to 45 degrees for example :/.
For advanced uses of OpenGL you provide your own matrices anyway.
I think it is because you should be able to get an exact rotation matrix for certain angles like 90 or 180 degrees. Like other people here has specified, if you use pi/2 instead of 90 degrees, rounding errors may lead to a transformation matrix that almost performs a rotation by 90 degrees.