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 :

Implémentation d'un algorithme de détection de collision simple


Sujet :

Physique

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 114
    Points : 44
    Points
    44
    Par défaut Implémentation d'un algorithme de détection de collision simple
    je voudrais bien implementer un algorithme de collision-detection simple fonctionnant ainsi:
    * je deplace la camera dans la scene, si elle rencontre l'un des murs de la scene alors elle n'avance plus sinon elle peut avancer. Bref c'est un algo assez simple. Je teste la collision entre la camera et les murs ou autres obstacles de la scene.
    * je voudrais aussi etre en mesure de detecter les collisions entre une balle (represente par un point ou une sphere) et les murs.
    J'ai fouille pas mal de code sur le net mais tous m'ont l'air complique. Il y a celui du moteur 3D d'Olivier LANNELUC que j'ai telecharge mais il utilise une methode que je ne comprend pas tres bien. (apparemment il utilise une matrice de collision?), je vous envoie en pieces jointes son code.
    Quelqu'un peut-il m'aider a implementer un simple algorithme de collision-detection? Ou meme m'envoie des exemples de codes vraiment simples car j'ai fouiller sur le net sans succes.
    Alors je compte sur vous...
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Février 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Février 2006
    Messages : 363
    Points : 353
    Points
    353
    Par défaut
    On va poser les choses.
    Ton mur, c'est en fait un ensemble de triangles ou chaque triangle est un plan qui n'est pas infini. Ta balle, c'est rien d'autre qu'une que tu peux représenter par un rayon et un point(le centre de la sphere).

    A partir de là l'algo est simple. Pour chaque triangles de ton mur tu fais:

    1) Calculer la normale au triangle et le coefficient d du plan que représente ce triangle

    2) Calculer la distance du centre de la sphere au plan.
    Si la distance est superieure au rayon de la sphere, il n'y a pas collision. Sinon tu passe à 3)

    3) Calculer la position du centre de la sphere projeté dans le plan.

    4) Le triangle que tu teste, est composé de 3 sommet(s1,s2,s3). On appelle le centre projeté de la sphere C. Il faut que tu calcule le vecteur s1C puis le vecteur s2C. Tu calcule l'angle entre les 2 et tu sauvegarde ce resultat dans une variable angle. Ensuite tu calcule les vecteurs s2C et s3C et tu calcule l'angle entre les 2 que t'ajoute à l'angle précédemment obtenu. Enfin tu calcule les vecteurs s3C et s1C et tu calcule l'angle et tu l'ajoute. Si la somme des 3 angles calculé fait 2pi, alors le centre projeté de ta sphere est dans le triangle, alors il y a collision.

    Une fois que tu as détecté la collision, il faut que tu calcule de quelle distance la sphere s'est enfoncé dans le plan et tu la rejette de cette meme distance.

Discussions similaires

  1. algorithme d'octree pour détection de collision
    Par korsakoff69 dans le forum DirectX
    Réponses: 3
    Dernier message: 01/07/2010, 19h12
  2. [FLASH MX PRO] Détection des collisions
    Par Invité dans le forum Flash
    Réponses: 10
    Dernier message: 07/03/2006, 18h20
  3. [Optimisation]Détection de collisions, boucles imbriquées
    Par Rafy dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 05/03/2006, 18h42
  4. Algorithme de détection de différences entre arbres
    Par GrandFather dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/03/2006, 18h34
  5. Réponses: 4
    Dernier message: 25/09/2004, 09h58

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