goast_tu
Messages postés212Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention28 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é.
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 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.
goast_tu
Messages postés212Date d'inscriptiondimanche 3 avril 2005StatutMembreDernière intervention28 mai 20112 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.
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?