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 :

Algorithmes de résolution de collision


Sujet :

Physique

  1. #1
    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 Algorithmes de résolution de collision
    Bonjour je lis le livre sur la physique dans les jeux videos.
    Dans ce livre il donne un algorithme pour la resolution de collision qui est comme ceci =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    iterationUsed = 0;
    while (iterationUsed < itearation)
    {
    	float max = 0;
    	maxIndex = maxContacts;
    	for (int i = 0 ; i< numContacts; i++)
    	{
    		separatingVelocity = contactArray[i].calculSepVel();
    		if (separatingVelocity < max)
    		{
    			max = separatingVelocity;
    			maxIndex = i;
    		}
    	}
    	contactArray[maxIndex].resolve(duration);
    	iterationUsed++;
    }
    Je trouve cet algorithme pas du tout optimise car on est obliger de reparcourir a chaque fois tout le tableau de contact.
    Mais cependant resoudre un contact peut changer la vitesse de separation d'autres contact donc reparcourir le tableau a chaque fois semble justifier...

    Y-a-t-il une solution plus optimisee ?

    Merci

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 977
    Points
    7 977
    Par défaut
    Je dirais, decouper ta grosse liste en plus petite liste afin de faire moins de comparaison d'un coup ?
    Donc faire une découpe du monde en petite parcelle (Octree, quadtree, ou autres).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    De toute façon, la complexité de la détection de collision fait que même si tu met un truc en temps constant ici, ça ne changera finalement rien.

  4. #4
    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
    Re,
    Ma question n'etait pas d'utiliser un quad tree ou autre.
    Mais si on regarde le code donne dans le premier post, on se rend compte que des qu'il resoud un contact il reboucle sur tous les contacts pour trouver le contact avec la vitesse de separation la plus grande.


    Alors que j'ai vu sur un moteur comme Box2D qu'il resoud tous les contacts d'un coup!

    Merci

  5. #5
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 977
    Points
    7 977
    Par défaut
    Désolé autant pour moi j'avais mal compris la question
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Algorithme de résolution du sudoku
    Par F0ul dans le forum Débuter
    Réponses: 4
    Dernier message: 15/04/2008, 22h24
  2. Algorithme de résolution d'équations
    Par _SamSoft_ dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 08/09/2007, 21h08
  3. Réponses: 1
    Dernier message: 07/03/2007, 09h28
  4. algorithme de résolution d'une unique équation à n variables
    Par Mourad dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 18/09/2006, 10h29
  5. Algorithme de résolution d'une grille de scrabble
    Par Muetdhiver dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 28/07/2006, 19h20

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