Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Problème géométrique direction/degrés[Résolu]  (Lu 2848 fois)

0 Membres et 1 Invité sur ce sujet

elhant1

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Problème géométrique direction/degrés[Résolu]
« le: Décembre 28, 2013, 12:18:42 pm »
Bonjour,
J ai un léger problème de géométrie: je dispose d un sprite qui occupe une
Position précise sur mon vecteur, il dispose d une orientation en degrés et
Se déplace toujours dans la direction face à lui. Comment puis je faire pour
Savoir de combien de x et de y il se déplace si par exemple il a
Une orientation de 20 degrés?
Merci de votre aide
« Modifié: Décembre 31, 2013, 07:39:23 pm par elhant1 »

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Problème géométrique direction/degrés
« Réponse #1 le: Décembre 28, 2013, 07:49:11 pm »
Tu peux transformer l'angle d'orientation (en radians) de ton sprite en un vecteur direction :
direction.x = cos(angle)
direction.y = sin(angle)
Ensuite tu multiplies ça par la vitesse que tu veux.

elhant1

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Problème géométrique direction/degrés
« Réponse #2 le: Décembre 28, 2013, 11:46:22 pm »
Merci c'est exactement ce que je cherchais.

elhant1

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Problème géométrique direction/degrés[En cours]
« Réponse #3 le: Décembre 31, 2013, 01:24:42 pm »
Bonjour,
J'ai une nouvelle question:
Je cherche à connaître l'angle de direction que mon sprite 1 doit emprunter pour rejoindre un sprite 2 en fonction de la position de ce sprite 2.

J'ai fait comme cela:
Angle=Asin((ysprite2-ysprite1) / racineCarrée((xsprite2 - xsprite1)² + (ysprite2 - ysprite1)²))

En clair j'ai fait l'arsin de la division du côté opposé à l'angle par l'hypothénuse ce qui devrait me donner donc l'angle cependant il n'est pas correcte.
Merci pour votre aide  :)

EDIT: En fait plus précisément, il ne fait pas la différence lorsque le sprite 2 et derrière ou devant le sprite1 l'angle est toujours le même

EDIT2: Je pense que c'est parce que l'hypothénuse est selon mon calcul toujours positive alors qu'elle devrait pouvoir être négative pour monter qu'elle se trouve devant ou derrières mon sprite.
« Modifié: Décembre 31, 2013, 02:16:59 pm par elhant1 »


elhant1

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Problème géométrique direction/degrés[En cours]
« Réponse #5 le: Décembre 31, 2013, 07:39:10 pm »
Vous êtes mon héros. Moi qui s'essayais à faire ça avec Al-Kashi...
Je crois que la programmation de programmes à rendu graphiques nécessite un meilleur niveau de maths que celui d'un tout nouvel élève de seconde  :'(
En tout cas merci.
Une légère remarque cependant j'ai vu que parfois la fonction suivante me renvoyer des valeurs négatives d'angles :

Citer
aobj = 180 * Atan2(yobj - y, xobj - x) / PI

            If aobj < 0 Then

                aobj = 360 + aobj

            End If

J'ai réussi à corriger cela de la manière suivante:

Citer
aobj = 180 * Atan2(yobj - y, xobj - x) / PI

            If aobj < 0 Then

                aobj = 360 + aobj

            End If

            If aobj >= 360 Then

                aobj = aobj - 360

            End If


Avec ce code ça marche sans aucun problème cependant si vous aviez le temps de m'éclairer sur ces étranges valeurs d'angles en radian négatifs...
Encore merci.
« Modifié: Décembre 31, 2013, 07:41:17 pm par elhant1 »

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Problème géométrique direction/degrés[Résolu]
« Réponse #6 le: Janvier 01, 2014, 01:30:39 am »
atan2 renvoie une valeur entre pi et -pi, donc si t'ajoutes 2pi (ou 360 en degrés comme tu le fais) quand la valeur de l'angle est négative tu te retrouves avec une valeur entre 0 et 2pi (entre 0° et 360°), je crois pas que ça puisse être négatif et ta première fonction me semble tout à fait correcte.
On apprend peut-être pas tout au collège, mais le niveau est suffisant pour comprendre les trucs utiles. Et avec un moteur de recherche et un niveau potable en anglais on peut déjà faire beaucoup de choses en 2D. ;)

Si ta question c'était de savoir pourquoi avec atan2 tu te retrouves avec un angle négatifs, ben t'as un cercle qui fait 360 (comme celui sur wikipedia), le sens positif c'est de tourner dans le sens anti-horaire (inverse à celui des aiguilles d'une montre). Ensuite tu remarques vite que tourner de 3π/2 dans le sens positif c'est pareil que de tourner de π/2 dans le sens négatif.

Sinon pas besoin de se vouvoyer sur un forum.  :D

elhant1

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Problème géométrique direction/degrés[Résolu]
« Réponse #7 le: Janvier 01, 2014, 01:32:03 pm »
Merci pour ton aide. :)