Allegro trae algunas rutinas para trabajar con n�meros de punto fijo, y define el tipo 'fixed' como un entero de 32 bits con signo. La parte alta es usada por el valor del entero y la parte baja es usada por el valor de la fracci�n, dando un rango de valores de -32768 a 32767 y un detalle de unos 4 o 5 decimales. Los n�meros de punto fijo pueden ser asignados, comparados, a�adidos, substra�dos, negados y desplazados (para multiplicar o dividir por potencias de 2) usando los operadores de enteros normales, pero tendr�a que tener cuidado de usar las rutinas de conversi�n apropiadas cuando combine n�meros de punto fijo con enteros o n�meros de coma flotante. Escribir 'punto_fijo_1 + punto_fijo_2' esta bien, pero 'punto_fijo + entero' no esta bien.
fixed itofix(int x);
Convierte un valor de entero a punto fijo. Esto es lo mismo que x<<16.
Relacionado con: fixtoi, ftofix, fixtof.int fixtoi(fixed x);
Relacionado con: itofix, ftofix, fixtof, fixfloor, fixceil.int fixfloor(fixed x);
Relacionado con: fixtoi, fixceil.int fixceil(fixed x);
Relacionado con: fixtoi, fixfloor.fixed ftofix(float x);
Relacionado con: fixtof, itofix, fixtoi.float fixtof(fixed x);
Relacionado con: ftofix, itofix, fixtoi.fixed fixmul(fixed x, fixed y);
Si hay desbordamiento o divisi�n por cero, errno ser� activado y el valor m�ximo posible ser� devuelto, pero errno no es limpiado si la operaci�n es realizada con �xito. Esto significa que si va a comprobar un desbordamiento de divisi�n, deber�a poner errno=0 antes de llamar a fixmul().
Relacionado con: fixadd, fixsub, fixdiv.fixed fixdiv(fixed x, fixed y);
Relacionado con: fixadd, fixsub, fixmul.fixed fixadd(fixed x, fixed y);
Relacionado con: fixsub, fixmul, fixdiv.fixed fixsub(fixed x, fixed y);
Relacionado con: fixadd, fixmul, fixdiv.
Las funciones de ra�z cuadrada, seno, coseno, tangente, cosecante y secante est�n implementadas usando tablas precalculadas, que son muy r�pidas pero no muy exactas. Por ahora, la cotangente realiza una b�squeda iterativa en la tabla de la tangente, por lo que es mas lenta que las otras.
Los �ngulos est�n representados en formato binario con 256 siendo igual al c�rculo completo, 64 es un �ngulo recto y as� sucesivamente. Esto tiene la ventaja de que un 'and' a nivel de bits puede ser usado para que el �ngulo quede entre cero y el c�rculo completo, eliminando esos tests cansinos 'if (angle >= 360)'.
fixed fixsin(fixed x);
Mira la tabla precalculada del seno.
Relacionado con: Trigonometr�a de punto fijo.fixed fixcos(fixed x);
Relacionado con: Trigonometr�a de punto fijo.fixed fixtan(fixed x);
Relacionado con: Trigonometr�a de punto fijo.fixed fixasin(fixed x);
Relacionado con: Trigonometr�a de punto fijo.fixed fixacos(fixed x);
Relacionado con: Trigonometr�a de punto fijo.fixed fixatan(fixed x);
Relacionado con: Trigonometr�a de punto fijo.fixed fixatan2(fixed y, fixed x);
Relacionado con: Trigonometr�a de punto fijo.fixed fixsqrt(fixed x);
Relacionado con: Trigonometr�a de punto fijo.fixed fixhypot(fixed x, fixed y);
Relacionado con: Trigonometr�a de punto fijo.
Si est� programando en C++ puede ignorar todo lo de arriba y usar la clase "fija", que sobrecarga muchos operadores para proveer conversi�n autom�tica desde y hacia valores enteros y de coma flotante, y llama las rutinas de arriba cuando se necesitan. Sin embargo no deber�a mezclar la clase "fija" con los typedefs de punto fijo, ya que el compilador tratar� los valores de punto fijo como enteros regulares e insertar� conversiones innecesarias. Por ejemplo, si x es un objeto de clase fija, llamar fixsqrt(x) devolver� un resultado err�neo. Deber�a usar sqrt(x) o x.swrt() en vez de eso.
Las rutinas de punto fijo antes eran nombradas con el prefijo "f" en lugar de "fix", ej: fixsqrt() antes era fsqrt(), pero tuvieron que ser renombradas por conflictos con algunas implementaciones de la libc. Esto no deber�a afectar a la mayor�a del c�digo existente dado que existen alias de compatibilidad hacia atr�s. Estos alias son funciones est�ticas inline que enlazan los nombres antiguos con los nuevos, ej: fsqrt() llama a fixsqrt(). Puede desactivar estos alias definiendo la macro de preprocesador ALLEGRO_NO_FIX_ALIASES antes de inclu�r allegro.h.