Comment faire pour trouver les coordonnées d'un point mobile ayant une direction qui aille de 0° à 359° (de 1 en 1) ????
Par exemple, comment faire pour des balles pouvant aller dans n'importe quelle direction ?
J'ai réussi en utilisant les cosinus et les sinus, mais je trouve ça un peu lent !!!
Vive CF !!
Vive la Time To Team !!!
PpHd Le 21/10/2001 à 02:00 Utilise des tables de cosinus/sinus.
des tables ??
Moi, j'ai fais cos(de machin chose) et sin(gnagnagna) !!!
Mais le programme est lent !!!
Vive CF !!
Vive la Time To Team !!!
PpHd Le 21/10/2001 à 02:00 des tables :
unsigned short cos_t[360] = {1*500,0.9*500 ...
cos(angle) * Rayon ... };
A Ouais !!! Mais c'est barbare !!!
Il faut en mettre 360 !!!!!
Vive CF !!
Vive la Time To Team !!!
PpHd Le 21/10/2001 à 02:00 Ce n'est absolument pas barbare !
Tu peux meme le faire calculer par ta calc :
short *cos_t;
bool make_cos(short rayon)
{
int i;
cos_t = malloc(sizeof(short) * 360);
if (!cos_t) return false;
for (i = 0 ; i < 360 ; i ++)
cos_t[i] = cos(i) * rayon;
}
Attends, là, je pige pas...
c'est quoi la variable "rayon"
Vive CF !!
Vive la Time To Team !!!
AHHH !!!!!! Compris... Enfin, je crois.
Vive CF !!
Vive la Time To Team !!!
Mais le PB c'est que la valeur entrée dans le cos est à virgule !!
exemple : cos(0.6153)
Et ça, tu le calcules comment ? Tu arrondis à 1 ???
Vive CF !!
Vive la Time To Team !!!
PpHd Le 21/10/2001 à 02:00 A oui. Ben tu convertis en radian :
cos_t[i] = cos(i*2.0*PI/360.0) * rayon;
ca m'interresse ton truc PpHd, faut que je te parle !
J'ai une autre idée quui n'utilise pas les cos/sin, j'ai fait ça en basic et ça marche... je me rappelle plus de la manière dont je m'y suis prit je vais essayer de retrouver ça
Miles Le 26/10/2001 à 10:36 DSE = DL dans ce cas, parce que tu ne vas calculer à l'infini, donc c'est valable que près de 0...
Si on prend un ordre de polynôme suffisant, on peut bien avoir une précision acceptable.
On n'a besoin que de [0,pi/2]. Or, si on prend le DL d'ordre 3 en pi/4, la différence entre les 2 courbes n'est déjà plus très visible. L'erreur la plus grande? En 0, l'erreur est d'environ -0,009247. En pi/2, l'erreur est d'environ -0,012718. Avec le DL d'ordre 4 en pi/4, l'erreur n'est plus que d'environ 0,001963 en 0 et d'environ -0,001507 en pi/2. Avec l'ordre 5, on obtient 0,000202 et 0,00025. Avec l'ordre 6, on obtient -0,000028 et 0,000023 - moins de 2 unités en virgule fixe 16 bits + 16 bits. Avec l'ordre 7, on obtient -0,0000023 et -0,0000027 - ce qui donne la précision maximale en virgule fixe 16 bits + 16 bits.
La formule?
taylor(sin(x),x,pi/4,7)
-2^(½)(4x-pi)^7/165150720-2^(½)(4x-pi)^6/5898240+2^(½)(4x-pi)^5/245760+2^(½)(4x-pi)^4/12288-2^(½)(4x-pi)³/768-2^(½)(4x-pi)²/64+2^(½)(4x-pi)/8+2^(½)/2
En simplifiant:
2^(-½)[-(4x-pi)^7/82575360-(4x-pi)^6/2949120+(4x-pi)^5/122880+(4x-pi)^4/6144-(4x-pi)³/384-(4x-pi)²/32+(4x-pi)/4+1]
[edit]Edité par Kevin Kofler le 26-10-2001 à 20:47:28[/edit]

3 termes de developpement asympthotique seront suffisant alors ..