begin process at 2012 02 10 03:03:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

Collision Detection Spheres Dynamiques


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Collision Detection Spheres Dynamiques

jeudi 2 février 2006 à 18:37:30 | Collision Detection Spheres Dynamiques

ionstorm356

Salut tout le monde, je suis actuellement entrein de programmer un moteur physique en directx et c++ et j'aimerai savoir comment on teste l'intersection entre 2 capsules (pour tester la collision entre des spheres dynamiques). Merci d'avance ++

Oxyde
jeudi 2 février 2006 à 21:21:15 | Re : Collision Detection Spheres Dynamiques

Galmiza

Fait un dessin, après tu y vas à coup de produits vectoriel et scalaire.
Qu'appelles-tu capsule ?
Cylindre aux extremités hémisphériques ?


Pour te dissuader de te lancer dans un moteur physique:
http://mapage.noos.fr/galmiza/dynamics.pdf


Par contre si c'est pour faire cogner quelques spheres, tu calcules la profondeur de pénétration (d(sphere_i, sphere_j)-r1-r2) et tu déduis un effort de répulsion à appliquer (ça c'est la méthode la plus pourri, mais ça marche et c'est facile à mettre en place).
jeudi 2 février 2006 à 21:41:28 | Re : Collision Detection Spheres Dynamiques

ionstorm356

-Oui c'est sa que j'appelle capsule, enfaite j'aimerai une technique pour détecter la collision entre 2 spheres en mouvements quand celle-ci vont très vite et que d'une frame à l'autre elle se traverse alors j'ai pensé a garder la position precédente de la sphere et a schématisé lanimation dans une capsule englobante et pour savoir si 2 spheres ont pu se toucher entre 2 frames je cherche s'il y a collision entre les 2 capsules.

-lol sa ne me dissuade pas du tout mais je rajoute que le moteur physique que je compte faire et fais pour les jeux videos et non pas pour des applications méchaniques complexe.

-Oui sa pas de problème je l'ai déja fait.

Que pense-tu de ma méthode pour trouver une collision avec mon systeme de capsules ? (sachant que c'est pour un moteur physique de jeux video)

Oxyde
vendredi 3 février 2006 à 01:07:28 | Re : Collision Detection Spheres Dynamiques

Galmiza

Ta méthode pour trouver une collision est bonne oui !
Mais quel type de jeu veux-tu faire au juste ?

En fait, la doc montre que les techniques de calcul ont évolué énormement, et que les méthodes que l'ont est tenté d'utiliser quand on pense avoir du level en mécanique sont obsolètes, lentes et instables. En tout cas, j'ai arrété le développement du mien pour utiliser Novodex. J'en suis satisfait.

Pour revenir à ton cas, si tu comptes gérer uniquement des collisions entre balles, pas de problème, n'utilise pas de librairie physique: tes balles seront peut-être nombreuses mais leur durée de vie courte, donc les performances accrues des moteurs physiques ne sont pas du tout indispensable.
vendredi 3 février 2006 à 16:55:45 | Re : Collision Detection Spheres Dynamiques

ionstorm356

Je veux faire un jeu de shoot dans l'espace mais enfaite j'ai des idées très novatrices , donc oui mon moteur physique ne sera pas très poussé (pas vraiment besoin) et donc je ne vais pas implementé un moteur physique complet pour ne gérer que sa.

Oxyde
lundi 6 février 2006 à 20:04:07 | Re : Collision Detection Spheres Dynamiques

ionstorm356

Bon enfaite mon problème se résumerai à une intersection de 2 cylindres, le problèmes c'est que les seuls équations de cylindres que j'ai trouvé sont x²+y²=R² ce qui correspond à un cylindre de longueur infini et alligné sur l'axe Z.
 - Y a-t-il une manière simple de calculer l'intersection entre 2 cylindres ?                      Si oui comment ?
- Sinon qu'elle est l'équation d'un cylindre orienté et de longueur définie ?

Merci d'avance

Oxyde
jeudi 9 février 2006 à 23:47:17 | Re : Collision Detection Spheres Dynamiques

Galmiza

C'est plus simple de calculer l'intersection entre 2 capsules que 2 cylindres. Sinon, tu penses bien que le cylindre aurait remplacé la capsule dans les moteurs physiques.

Tu procèdes petit à petit:
Tu as 2 capsules avec une matrice de transformation local->globlal, un rayon, une demi hauteur, l'axe est y et la capsule est centrée dans le repère local.


Tu vérifies si les cylindres infinis sont en contact:
distance entre les 2 droites < somme des rayons des 2 capsules; non -> pas collision
matrice_transformation*[0,0,0,1] donne centre dans repère global
matrice_transformation*[0,1,0,0] donne direction axe capsule dans global
donc tu déduis les vecteurs directeurs des axes des capsules.

Après c'est trop compliqué à expliquer avec des mots:

Si les 2 segments colorés 1D sont distants de moins de la somme des 2 rayons ainsi que les centres des sphères (tester cette dernière propriété après pour gagner en temps de calcul), alors collision, d'ou l'avantage des extremités hemisphériques !

Donc la tu sais si tu as collision entre les 2 capsules.
Pour la direction des contacts, vu que tes balles vont vite et que tes capsules seront TRES interpenetrées, tu peux l'approximer sans produire d'abération physique avec l'axe du vecteur calculé pour le calcul des distances entre les deux axes des capsules (vecteur le plus "court" qui lie les 2 droites).

Si ce n'est pas très clair, fait le moi savoir.
dimanche 12 février 2006 à 01:23:23 | Re : Collision Detection Spheres Dynamiques

ionstorm356

Hum pas tout compris l'histoire des matrices.

Oxyde


Cette discussion est classée dans : dynamiques, detection, collision, spheres


Répondre à ce message

Sujets en rapport avec ce message

Detection de collision [ par goast_tu ] 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 Detection de collision C++ [ par handmousemaster ] Bonjour à tous, Dans le cadre d'un projet informatique, j'ai besoin de faire de la detection de collisions en C++. Cependant je veux la faire de mani detection de collision [ par mimi142009 ] bonjour!je veux faire la détection de collision d'un des objets 3D si quelqu'un a une idée ou connait un algorithme pour me e passer et merci.[^^happ Detection et suivi des mouvements d'un objet (personne) dans un local [ par farranito ] [b]Développer un module capable, à partir des images acquises avec des cameras, de détecter, localiser et suivre les mouvements d’un objet (/ une per OpenCv : detection d'objets a partir d'une camera en mouvement [ par glen1789 ] Bonjour, Dans le cadre d'un stage de fin de DUT on me demande de travailler sur la detection d'objets a partir d'une camera en mouvement en utilisant detection de caracteres OEM [ par mcallan ] Salut, J'ai un buffer (char*) qui me contient soit des chaines ANSI soit des chaines OEM si c'est des OEM, je les transforme en ANSI avec OemToChar detection du visage [ par sousoi ] bonsoir; voila mon probleme est le suivant: j'ai un fichier vrml qui contient les donnée 3D d'une scene qui contient un visage ( les donnée 3D sont x Detection d'une mire [ par sam2125 ] Bonjour à tous, Je dois créer un logiciel permettant de réaliser de la métrologie sur des images en perspectives. Pour cela j'utilise une mire (carré Detection de l'Iphone [ par afavre_tx ] Bonjour à tous, Pour un projet, Visual Studio, C++ unicode, je cherche une lib me permettant de savoir si un iphone est connecté au pc et me permetta detection de lignes a l'aide de la transformée de Hough sous matlab [ par mberkani ] j'utilise matlab pour traiter une video de route , j'ai un pb de programmation concernant la detection des bordures de la route en utilisant la transf


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,635 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales