déplacements 360° via COS SIN

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

déplacements 360° via COS SIN

Message par drfloyd »

Bon j'ai un petit soucis pour diriger mes sprites a 360°, je ne sais pas quoi mettre dans cos et sin

dans Regate j'ai placé 0.001 et j'incremente de +0.001 ou -0.001 pour faire tourner, mais bon je ne sais jamais dans quelel direction pointe le bateau.

En gros je voudrais faire un test de ce genre :

for i=1 to 360
delay 500
lineXY (300,300,300+50*cos(i),300+50*sin(i))
next i

J'ai besoin de savoir le degré (entre 0 et 360) afin d'afficher le bon sprite.

Comprenez vous ma demande deja ? LOL
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: déplacements 360° via COS SIN

Message par G-Rom »

Le principe tu dois le connaitre :
NewX/Y = X/Y + Distance * Cos/Sin ( ANGLE * PI / 180 )
ANGLE est en degrés , tu n'as plus qu'a jouer avec cette variable. ;)
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: déplacements 360° via COS SIN

Message par djes »

G-Rom a raison. Tu dois partir de ton angle. Un tour complet représente 2*PI radians (l'unité native de cos et sin), ou 360° (avec la conversion de G-ROM).

Si tu as 10 images, la première image est à l'angle 0, la 5ème à PI (ou 180°), la dernière à 2*PI (ou 360°). C'est une simple règle de trois!

Donc tu multiplies ton angle par ton nombre d'images total, et tu divises par 2*PI (ou 360°) pour avoir le numéro de l'image.

A noter deux choses :
L'angle peut dépasser 2*PI radians (ou 360°) ; tu dois soit faire une condition, soit un modulo afin de rester dans l'intervalle [0 ; 2*PI[ (ou [0 ; 360[ )
La direction indiquée devrait correspondre à l'image sur un certain angle avant et après. Par exemple, si ton vaisseau pointe vers le haut (0), que tu as dix images, cette image devrait être affichée sur l'intervalle ]2*PI - (1/20 * 2*pi) ; 2*pi]U[0 ; (1/20 * 2*pi)[. Il faut donc que tu fasses une correction avant ou après tes calculs, de façon à changer d'image au bon moment. (le 1/20 correspond à la moitié de l'angle pendant lequel est affiché une image, une moitié d'angle avant, une moitié d'angle après. Si tu avais 30 images, ce serait 1/60).
drfloyd
Messages : 220
Inscription : mar. 21/août/2007 13:30
Contact :

Re: déplacements 360° via COS SIN

Message par drfloyd »

merci les gars, que du bonheur votre assistance
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Re: déplacements 360° via COS SIN

Message par Fortix »

Salut @drfloyd :D ,

voici deux Macros pour ça:

Code : Tout sélectionner

Macro NEW_X(x, Angle, Distance)
    ((x) + Cos((Angle)*#PI/180) * (Distance))
EndMacro

Macro NEW_Y(y, Angle, Distance)
    ((y) - Sin((Angle)*#PI/180) * (Distance))
EndMacro
bon projet :wink:
Répondre