bonjour,
je me demande quel est la meilleur structure de donnée (octree, grille...) pour gérer les collisions entre des disques de différente taille dans un monde 2d continue.
Merci
bonjour,
je me demande quel est la meilleur structure de donnée (octree, grille...) pour gérer les collisions entre des disques de différente taille dans un monde 2d continue.
Merci
Bonjour,
un octree est à mon sens plus utiliser pour de la 3D puisqu'il permet de divisiser un volume en deux dans les trois dimensions : 2^3=8.
dans un monde 2D, je travaillerais soit avec une grille, sois avec les coordonnées des centre des disques et les rayons respectif. Car connaissant les cordonnées du centre (X1,Y1) du disque 1 de rayon R1 et celles du disque 2 (X2,Y2) et de rayon R2, on peut savoir si D1 intersect D2.
Bonjour,
effectivement par habitude j'ai écrit octree mais je pensait quadtree.
Mais je n'ai pas l'impression aussi que le quadtree soit adapté pour ce type de calcul de contact.
La grille non plus car mes disque sont de taille différente, et suivant la taille des disques l'efficacité changera ou alors il faut pensé multi-grille ?.
Pour le calcul de distance entre disque il n'est pas question à cause du nombre d'element dans l'application. Il ne doit être utilisé qu'après une réduction des posibilité de contact.
Le quadtree me semble être la bonne base.
Mais il faut l'adapter en acceptant que les noeuds (et pas seulement les feuilles) puissent contenir des cercles.
Quand on cherche si un cercle C peut occasionner une collision, on recherchera des collisions avec des cercles appartenant non seulement au noeud contenant C et à ses fils, mais aussi à ses parents (sans traiter leur descendance).
Partager