IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

angle entre deux points


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut angle entre deux points
    Bonjour,

    Voila, je suis en train de programmer un jeux tout simple et j'en suis au début du codage et je bute sur un point.
    J'essaye de faire pivoter le héro en fonction de la ou se trouve le curseur.
    J'ai essayé tout un tas de truc mais je n'arrive pas a trouver de bibliotheque ou d'algorythme qui me permette d'obtenir cet angle en degrés (pour pivoter l'image dans pygame).
    J'ai essayé avec la librairie qu'il y a dans les cookbooks de pygames qui propose une fonction get_angle_between(self,other) qui semble tout indiqué surtout qu'elle est censée retourner un angle en degres. Hélas, ca ne me retourne des angles toujours assez faibles en général de 0 a 45 degrés.
    Je n'arrive pas a comprendre comment faire.

    Merci de bien vouloir m'aider

    ps : désolé si j'ai posté au mauvais endroit.

  2. #2
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    Je sais que le post commence à se faire vieux, vu comment j'ai galéré pour trouver la réponse après avoir rencontré le même problème, ça pourra toujours être utilie à quelqu'un...

    il faut utiliser des vecteurs.

    En partant du principe que les axes x et y peuvent chacun être représentés par un vecteur unitaire

    dans un plan O v(i) v(j) où i et j sont des vecteurs unitaires, on peut considérer pour un point N un vecteur v(ON) : (v(i)*x ; v(j)*y)

    admettons le point P ( || i ||*x ; || j ||*y ) la position du personnage, et son vecteur associé v(OP)

    admettons le point C ( || i ||*t ; || j ||*u ) la position du curseur, et son vecteur associé v(OC).

    le vecteur v(PC) = v(OP)-v(OC)

    il faut maintenant calculer l'angle relatif entre v(i) et v(PC).
    alpha = acos( ( || v(i) ||² + || v(PC) ||² - || v(i) - v(PC) ||² ) / ( 2*|| v(i) || * || v(PC) || ) )

    à noter que l'angle obtenu sera toujours <= à 180° (si exprimer en degrés) ou pi (si exprimé en radians), il faut donc s'aider de la direction du vecteur pour l'ajuster.

    NB : au cas où tu sois aussi peu familier que moi aux notations mathémathiques, les || autours des vecteurs signifient leur magnitude (ou distance si tu préfère). Ne pouvant mettre de flèches au dessus des vecteurs, j'ai désigné les vecteur v(x) ou x est le nom du vecteur en question.

    PS: un angle entre deux points n'existe pas

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/04/2007, 22h50
  2. [Base de données Spatial] Distance entre deux points
    Par Pumpkins dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/11/2006, 12h18
  3. Calcul de distance entre deux points en WGS84
    Par marieR dans le forum Langage
    Réponses: 5
    Dernier message: 03/08/2006, 17h07
  4. calcule d'angle entre 3 points d'une matrice
    Par bmw13fr dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 08/04/2006, 18h56
  5. angle entre 3 points
    Par elekis dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 27/05/2005, 20h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo