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 :

Collision Box2D vs Box2D + Vitesse


Sujet :

Physique

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Collision Box2D vs Box2D + Vitesse
    Bonjour,

    Cela fait un moment que j’essayé de perfectionner ma fonction qui me permet de tester les collisions entre deux box2D. « Pour un univers 2D »

    Je m’explique.

    Pour commencer voici le « Prototypes » de ma fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    TCollideInfo Collision( CGeomBox boxA, Vector2D posA,  Vector2D velA,
       CGeomBox boxB, Vector2D posB   ) ;
     
    class CGeomBox {
    Vector2D v[4] ;
    };
     
    class Vector2D {
    	float x, y;
    };

    Et voilà ce dont j’ai besoin qu’elle retourne:
    1. S’il y a collision
    2. La position du boxA si il y a collision (vecteur de direction + intensité du vecteur, pour pouvoir le déplacer à l’endroit adéquat)
    3. Quel coté est touché pour chacun des deux box.


    Jusqu’à maintenant, je prenais mon boxA et je le déplaçais x fois le long de l’axe de la vitesse et faisais un test simple de collision avec le boxB pour chaque position, mais je trouve cette technique trop « barbare » et lente.

    C’est pourquoi j’ai décidé de modifier mon code, et pour ce faire, j’ai cherché des solutions sur internet et j’ai pus alors trouver une solution adaptée « le AABB » et des exemples intéressant comme « PolyColly ».

    Jusque que là, pas vraiment de problème, j’ai bien compris le principe de l’AABB pour faire un simple test de collision « qui est en fait le même que j’utilisais pour faire le test simple de collision, puisque ce sont des carrés ».

    Alors qu’elle est le problème ?

    Celui-ci réside surtout au niveau du test de collisions si l’on veut prendre en compte la vélocité du boxA, ce qui est en fait la partie que j’aimerais améliorer au niveau de ma fonction, « J’ai regardé l’exemple 3 de PolyColly, mais j’ai du mal à comprendre comment il s’y prend pour la vélocité ».

    Merci pour votre aide.

    PS : J’espère que j’ai posté sur la bonne section du forum.

  2. #2
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Points : 5 323
    Points
    5 323
    Par défaut
    la premiere solution que tu a donné consiste à discretiser le temps, c'est ce qui est utilisé par pas mal de moteur physique, avec tous les problèmes qu'on peut imaginer (on peut ne pas detecter certaine collision etc...)

    si tu veut un truc plus robuste, tu peut regarder du coté des detection de collision continue (continuous collision detection) et notamment les swept collision detection.
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Salut,

    J’ai cherché des explications et des tutoriaux sur le « swept collision
    detection » mais je n’ai rien trouvé de concluant, pourrais-tu m’en dire
    d’avantage sur cette méthode ?

    Merci.

Discussions similaires

  1. [Box2D] Collision
    Par CLion dans le forum Physique
    Réponses: 0
    Dernier message: 25/08/2011, 03h15
  2. [Box2D] Problème avec la vitesse d'une balle
    Par Emilie L. dans le forum Physique
    Réponses: 1
    Dernier message: 29/09/2010, 15h29
  3. [Box2D] Limiter la rotation d'un corps
    Par bachir006 dans le forum Physique
    Réponses: 7
    Dernier message: 26/11/2008, 09h41
  4. vitesse forcée sur collision
    Par filiplj dans le forum ODE
    Réponses: 0
    Dernier message: 23/08/2007, 16h00
  5. Collisions et vitesse
    Par goutbouyo dans le forum OpenGL
    Réponses: 5
    Dernier message: 03/11/2004, 10h44

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