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

Physique Discussion :

[2D] Repositionner deux rectangles à la détection d'une collision


Sujet :

Physique

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 13
    Points : 12
    Points
    12
    Par défaut [2D] Repositionner deux rectangles à la détection d'une collision
    Bonjour,

    Je suis actuellement entrain de monter un moteur de jeu en Actionscript.
    Pas de soucis pour détecter les collisions entre deux rectangle. Le problème vient pour bien repositionner ces rectangles.

    voici un shema pour présenter la situation :



    2 rectangles (parallèle aux axes du plan) sont en collision. A chaque rectangle est associé un vecteur vitesse (que je connais)
    Je connais aussi le rectangle de collision (coordonnées+ largeur/hauteur)
    Ce que je cherche: c'est de quel distance je dois faire glisser les deux rectangles sur les axes de leurs respectif , afin qu'ils se touchent juste.

    J'ai l'impression que ce n'est pas ultra compliqué, mais je sèche un peu là.
    Quelqu'un peut-il m'éclairer? Merci.

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    786
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 786
    Points : 602
    Points
    602
    Par défaut re
    Lu,
    tu peux regarder sur les formules de l'impulsions ici :
    http://sidvind.com/wiki/2D-Collision_response

    et aussi ici pour un algo qui date de 1997 tout de meme ^^

    http://chrishecker.com/images/e/e7/Gdmphys3.pdf

    Bonne chance

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Merci bien.
    Je regarde ça : )

    EDIT:
    Si j'ai bien compris, les document ci-dessus traite des effets de la collision (changement de direction toussa), hors, pour le moment je ne cherche pas à faire "rebondir" mes objets, mais à les replacer correctement (bref de supprimer le chevauchement entre les objets et les juxtaposer)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 87
    Points : 111
    Points
    111
    Par défaut
    tes deux rectangles sont en mouvement, c'est deja un cas plus complexe que si un des deux était fixe.
    L'article parle d'echange de quantité de mouvement. (momentum en anglais).
    d'apres moi c'est présenter de maniere compliquer un truc simple mais bon.

    Il faut déjà savoir comment tu veux que ca réagisse, si tes objets ne rebondissent pas, même replacés, leur vitesse ne change pas et ils vont recolisionner au prochain pas de simulation.
    Il FAUT les faire rebondir ou tu risque de te retrouver avec des objets qui se déplacerons plus vite que la detection de collision par overlapping ne peut le détecter. (il faudra alors passer en sweeped collision detection ce qui est plus couteux et compliqué)
    donc mon conseil, trace un trait entre les deux centres des rectangles: cette ligne sera "la normale du mirroir" (N) pour les vitesses.
    normalise là, et fait V=V-2*(V.N)N (operation "refelct")
    avec N = -N pour le deuxieme rectangle.
    dans son papier, Hecker parle d'impulsions, je pense que ca n'a aucun interet a part rajouter un terme et embrouiller le peuple.
    pour replacer tes rectangles tu vas devoir choisir la direction ou la distance sera la plus courte pour les séparer.
    si tu n'a pas a simuler 2000 couples d'objets en même temps, tu peux le faire pixel par pixel, et tu t'arretes quand il n'y a plus d'intersection.
    (par exemple, déplace tes rectangles selon N)

Discussions similaires

  1. [Apache]Deux noms de domaines sur une IP
    Par Alexandre T dans le forum Apache
    Réponses: 3
    Dernier message: 12/01/2006, 16h10
  2. Réponses: 1
    Dernier message: 11/10/2005, 23h50
  3. [RegEx] Gérer deux possibilités et leur associer une valeur 0/1
    Par speed_man002 dans le forum Langage
    Réponses: 3
    Dernier message: 21/09/2005, 18h32
  4. [JSP] addition deux valeurs en sortie d'une jsp
    Par LESOLEIL dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 08/06/2005, 11h13
  5. [prg jeux ]Définir l'intersection de deux rectangles
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 30/07/2003, 18h11

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