Ver Mensaje Individual
  #3  
Antiguo 14-01-2006
melon melon is offline
Miembro
 
Registrado: ene 2005
Posts: 13
Reputación: 0
melon Va por buen camino
Lo que comentas de la interpolación, había pensado en una interpolación a tramos (rectas) en base a puntos conocidos, supongo que será será lo de lagrange que comentas, hace ya años que estudié cálculo y mi memoria es bastante limitada...
Para los senos y cosenos me acuerdo hace muuuucho tiempo con el turbopascal que para agilizar mi 'motor-chapuza 3d' almacenaba los valores en tablas, entonces era peligroso porque siempre iba apurado de memoria pero hoy en dia... En el caso del arcotangente (más concreto el arctan2 que devuelve el cuadrante) necesita dos parámetros, así que habrá que buscar otra solución. Me he encontrado por ahí algoritmos iterativos pero tienen muy poca precisión.
En cuanto a la raíz cuadrada me he encontrado con la función que utilizan Quake3 y Doom3, pero es que de C ni idea oiga, a ver si alguien la puede traducir me haría un gran favor:
Código:
float InvSqrt (float x)
{
    float xhalf = 0.5f*x;
    int i = *(int*)&x;
    i = 0x5f3759df - (i >> 1);
    x = *(float*)&i;
    x = x*(1.5f - xhalf*x*x);
    return x;
}
La he sacado de aquí:
http://http://www.gamedev.net/commun...opic_id=139956
Según comentan es unas 10 veces más rápida que la de math.h, es el algoritmo de Newton-Rhapson y es la inversa(1/sqrt), que por alguna extraña razón es la que usa la gente en historias de 3D.
Seguiremos investigando...
Responder Con Cita