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

Développement 2D, 3D et Jeux Discussion :

Théorie des collisions : Formes 2D simples


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut Théorie des collisions : Formes 2D simples
    Bonjour à tous,

    Voici le premier tutoriel sur la théorie des collisions. Celui-ci explore les algorithmes de collision les plus simples en détaillant ce que sont les « Axis Aligned Bounding Box », les « Oriented Bounding Box » et les sphères.

    N'hésitez pas à faire des commentaires.

    Bonne lecture
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour

    excellent tuto il vise l'essentiel, la simplification du calcule qui conduit a une optimisation des performances , je m'amuse a faire des jeux avec collision 2d et je n'avais pensé au teste avec les 'ou' qui est d'une évidence.

    et un marque pages de plus.

    merci

  3. #3
    Membre expérimenté Avatar de dfiad77pro
    Homme Profil pro
    Responsable Architecture logicielle
    Inscrit en
    Décembre 2008
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Architecture logicielle
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 541
    Points : 1 729
    Points
    1 729
    Par défaut
    Très bien présenté et lisible ça fait plaisir


    On attends l'ajout des collisions géométrique 2D complexe ( beaucoup plus lourdes mais précise)

  4. #4
    Membre régulier
    Profil pro
    profiler
    Inscrit en
    Février 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : profiler

    Informations forums :
    Inscription : Février 2008
    Messages : 84
    Points : 99
    Points
    99
    Par défaut
    Si on veut pinailler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    bool Collision(AABB box1,AABB box2)
    {
       if((box2.x >= box1.x + box1.w)      // trop à droite
        || (box2.x + box2.w <= box1.x) // trop à gauche
        || (box2.y >= box1.y + box1.h) // trop en bas
        || (box2.y + box2.h <= box1.y))  // trop en haut
              return false; 
       else
              return true; 
    }
    à "optimiser" par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    bool Collision(AABB box1,AABB box2)
    {
       return ((box2.x >= box1.x + box1.w)       // trop à droite
        || (box2.x + box2.w <= box1.x)           // trop à gauche
        || (box2.y >= box1.y + box1.h)          // trop en bas
        || (box2.y + box2.h <= box1.y));        // trop en haut; 
    }

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 858
    Points : 218 577
    Points
    218 577
    Billets dans le blog
    120
    Par défaut
    J'ose croire que le compilateur aura déjà "pinaillé" pour vous.

    Sinon, le vrai pinaillage à faire, sera sur éviter la copie de l'intégralité de la structure lorsque passé en paramètre à la fonction, car là, la copie des deux structures va vraiment faire perdre du temps.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Puis quand on "optimise" c'est mieux quand ça fait la même chose et pas l'inverse :p
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  7. #7
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Sympa le tuto. Une remarque, est-ce que ceci ne réduirait pas le nombre théorique de tests ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    bool Collision(int curseur_x,int curseur_y,AABB box)
    {
       if (curseur_x < box.x 
        || curseur_x > box.x + box.w
        || curseur_y < box.y 
        || curseur_y > box.y + box.h)
           return false;
       else
           return true;
    }
    Vive les roues en pierre

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Août 2004
    Messages : 30
    Points : 43
    Points
    43
    Par défaut Question
    Petite question en parcourant rapidement l'article: l'histoire des carrées , pour optimiser ne fallait-il pas faire un décalage vers la gauche pour avoir la valeur? et la droite pour une racine carrée? Je ne me souvient plus

Discussions similaires

  1. Théorie des collisions : Formes 3D simples
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 16/01/2014, 20h04

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