Detection de collision

goast_tu Messages postés 212 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 28 mai 2011 - 30 juin 2006 à 22:49
 Utilisateur anonyme - 5 juil. 2006 à 16:50
Salut

Je suis en train de créer un programme dans le quel je doit implémenter
la detection de collision entre deux boites. La difficulté c'est que
les boites peuvent etre orienté suivant differents angles.

Est ce que quelqu'un sais comment le faire, puisque la je suis vraiment desesperé.


Merci.

9 réponses

mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
30 juin 2006 à 23:21
ca ne change peut être pas complètement la donne, mais 2D ou 3D ? Et d'ailleurs tant qu'on y est des boîtes... rectangulaires ?

<hr size="2" width="100%" />  Qui ne tente rien...

  Ne risque pas d'avoir grand chose !!!

<hr siz="" />
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
1 juil. 2006 à 01:57
Je te conseille très vivement d'utiliser un moteur physique. Ils sont très performants, utilisent des techniques qu'on est loin de pouvoir imaginer si on est pas un dieu dans le domaines des multiplicateurs de Lagrange et sont bien documentés. Essai PhysX (Novodex) de Ageia, il est gratuit.
Tu vas te prendre la tête sinon avant d'être dégouté d'avoir pondu un algo lent et pas très stable.
Perso j'en avais commencé un avec des connaissances de bases de physique et mécanique (la terminale S suffit amplement pour faire un algo potable) mais la stabilité (car j'imagine que tu ne t'arretes pas qu'aux collisions) est extrêmement difficile à allier avec la vitesse. J'ai embrayé avec PhysX dont je suis très satisfait.
0
goast_tu Messages postés 212 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 28 mai 2011 2
1 juil. 2006 à 12:57
Salu!

J'aurai du peut etre dir les parallelpipedes. Donc c'est en 3d.

Je ne m'interesse qu'aux collisions simples (je veux juste savoir si 2 boites sont en collision ou non).

Merci pour ta reponce Galimza je vais voir ce moteur physique, mais je
doit faire un algorithme directement dans mon programme sans
utilisation de librairies.


goast_tu
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
1 juil. 2006 à 13:43
Tu peux proceder ainsi:
Tu calcules les AABB (axis aligned bounding boxes, regarde sur le net il y a des dessins très bien fait pour les définir)
Tu vérifies si les AABB se touchent
NON -> pas de collisons -> exit
Tu vérifies que chaque sommet d'un parallelepipede ne se situe pas à l'intérieur de l'autre parallelepipede.
OUI -> la direction du contact est la normale à la face touchées (si tu en a plusieurs, tu fais une moyenne de ces normales) -> ~exit
NON -> ca ne veut pas dire qu'il n'y a pas de collision
Tu vérifies si chaque arête d'un parallelepipede ne se situe pas derrière une arête de l'autre parallelepipede (derrière a un sens car les arêtes sont orientées ver l'extérieur ).
OUI -> direction contact = produit vec des arètes
NON -> pas de collisions -> exit

Ce n'est pas rigoureux mais ça ne peut que t'aider.

Bonne chance !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mondrone Messages postés 246 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 11 mars 2012
1 juil. 2006 à 14:58
je n'aurais pas dit mieux, les méthodes auqelles je pensais rejoignent les tiennes !

<hr size="2" width="100%" />  Qui ne tente rien...

  Ne risque pas d'avoir grand chose !!!

<hr siz="" />
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
2 juil. 2006 à 22:41
Bas si ces que des cubes, t'as juste besoin de faire des produits scalaires...
0
Utilisateur anonyme
3 juil. 2006 à 07:09
slt peut tu m'en dire plus sur PhysX stp
Il est gratuit ? parceque sur le site j'ai pas trouvé le lien il parlai de licence!

Et je vois pas comment on fait pour combiné un détecteur de colision avec openGL mais vrement pas.

Peux-tu m'en dire un plus stp en 3-4 lignes 

MaLaDeDeDe 97one
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
5 juil. 2006 à 15:31
Salut,


Effectivement, la derniere version n'est plus disponible gratuitement !
La derniere version disponible pour le public est la 2.3.3.

Regarde ce topic, j'y explique tres brievement les grand principes de l'implantation d'un moteur physique dans un moteur graphique.

http://www.cppfrance.com/infomsg_COMMENT-TESTER-COLLISIONS-AVEC-SDL_653331.aspx#6

Malheureusement le lien vers AGEIA ne propose plus la version 2.3.1.
0
Utilisateur anonyme
5 juil. 2006 à 16:50
ok mici

MaLaDeDeDe 97one 
0
Rejoignez-nous