Welcome to Stratos!
typedef float acimut_t; ///< 0 ... 400typedef float grados_t; ///< 0 ... 360typedef float radianes_t; ///< 0 ... 2*pi
grados_t grados(acimut_t v){ return (v / 400.0) * 360.0;}grados_t grados(radianes_t v){ return (v / 2*kPi) * 360.0;}
Ahora, yo lo que haria (por tu propia salud mental! ) es homogeneizar el tipo de angulos que usa tu codigo. Es decir, decides que tu codigo usa radianes y luego ya vas convirtiendo como prefieras (wrappers, cambios in-situ, etc...) de los tipos de las librerias al tuyo.
Hi,mas o menos, por lo que puedo intuir de tu caso, yo lo que haria seria trabajar en un tipo de angulo en mi "core" y pasaria (lo antes posible) todas las entradas/salidas de angulos que lleguen/salgan a/de mi "core". Por ejemplo, supongamos que mi core trabaja en radianes. Si el usuario trabaja en grados de 0..400 justo despues de recoger la entrada del usuario y validarla, la convertiria a radianes, para despues procesarla en mi core. Con Opengl igual, justo cuando vayas a necesitar llamar a Opengl, lo conviertes a grados.Yo no creo que merezca la pena meter mas tipos en este caso.Un saludo,Ruben
A mí se me ocurre otra cosa que podrías hacer. Definir una clase para cada uno de los tres tipos que comentas, p. ej: Grado, Radian, Gradian (sí, se llama así). Entonces, para cada una de las clases, defines operadores de conversion implicita (operator=). Claro que tambien tendrías que definir los operadores +, -, * ....