Zeph Le 22/11/2002 à 22:28 regarde dans la partie algo, une question assez proche a été posée y'a pas longtemps.

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Ben déjà la gravité c que si tu envoies ta balle en l'air; je suppose que c'est le cas.
La courbe est bien du second degré.
Pas la peine d'utiliser des dérivées partielles (qui sont en fait des dérivées ici)
L'équation de ta courbe est qq ch qui doit ressembler à ça :
y(t) = -5t² + 20t + 1
x(t) = 20t
(en mètres par secondes)
ça te donne leur vitesse :
y'(t) = -10t + 20
x'(t) = 20
leur accélération :
y''(t) = -10 ( ~ 9.81, cad l'attraction terrestre )
x''(t) = 0 (pas d'accélération sur x, sauf si tu veux gérer le vent)
Je te conseille d'avoir une variable pour la vitesse de chaque composante et à chaque cycle, tu incrémentes la composante avec sa vitesse (bien sûr, pour gérer l'accélération, il faut que ajoutes la variable d'accélération avec celle de vitesse) :
vitesse_x+=acceleration_x; // acceleration_x>0 si le vent vient de gauche, <0 si le vent vient de droite
vitesse_y+=acceleration_y; // acceleration_y = -10;
pos_x+=vitesse_x;
pos_y+=vitesse_y;
Je pense que c'est correct.
Bien sûr, il faut qu'au début tu définisses toi même les valeurs initiales des accélérations, vitesses et positions.
emploie des cos et des sins pour l'angle...
Wouh Wouh Wouh! Arr! Grrrr!
Link Le 23/11/2002 à 14:17 Les cos et les sin:
Le projectile est lancé dans un plan vertical [0x,0y] avec un vecteur vitesse initiale de norme Vinit et d'angle Alpha par rapport à l'horizontale
La conversion de ce vecteur en Rectangulaire donne
VXinit=Vinit*cos(Alpha), VYinit=Vinit*sin(Alpha)
Après, vx est constante, et vy reçoit à chaque instant t l'accélération ay égale à -_g (_g étant la norme du vecteur accélération gravitationnelle: 9.80665 _m/_s^2 selon la 89, en _m/_s^2 ou en _N/_kg)
donc vx(t)=VXinit
vy(t)=VYinit + _g . t
En intégrant on obtient:
x(t)=Xinit + VXinit . t
y(t)=Yinit + VYinit . t - 1/2 . _g . t2
En remplaçant:
x(t)=Xinit + Vinit*cos(Alpha) . t
y(t)=Yinit + Vinit*sin(Alpha) . t - 1/2 . _g . t2
On peut aussi exprimer y en fonction de x, mais j'ai la flemme...

Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.
heu en programmation, c plus rapide de ne pas utiliser sin & cos, c pour cela que je déconseille de les utiliser, car on peut tout à fait utiliser ne pas les utiliser.
Ximoon Le 23/11/2002 à 15:23Edité par Ximoon le 23/11/2002 à 15:24 Autre méthode:
Tu définis le déplacement élémentaire horizontal (plutôt que la vitesse, on fait des déplacements discrets ici) et tu déplaces la balle de cette constante à chaque image.
Pour le déplacement vertical, tu ajoutes à chaque affichage la 'vitesse' initiale et tu ajoutes l'accélération (ici -10, par exemple) multipliée par le nombre d'images ou de cycles depuis le début du lancer. Il ne reste plus qu'à ajouter les coordonnées actuelles.
Bien sûr, ça correspond aux formules ci-dessus...
x(n)=x(n-1)+vv0
y(n)=y(n-1)+vh0+a*n
vh=vitesse horizontale
vv=vitesse verticale
a=pseudo-accélération de la pesanteur

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.
médor Le 08/12/2002 à 01:40 je crois qu'il faut faire un (char *) tab[]={&ptr1,&ptr2,...}
Les cartes !!!!
Je dois les retrouver ! :D:D:D