Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1352 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Algorithme de collision entre un point et un rectangle.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algorithme de collision entre un point et un rectangle.

n°599929
smilm
Posté le 31-12-2003 à 15:53:27  profilanswer
 

Salut!Je suis le frere de SmilM
J'ai fais de nombreuses recherches au niveau des algorithme de collsion pour la programmation d'un jeu en delphi.
Je suis chargé du moteur phyisque.
 
J'ai donc fais une application qui test la collision entre deux rectangles (sous forme de shape sous delphi) grace a le technique de Bounding-Box.
Seulement maintenant sur un autre programme, je demande a l'utilisateur de donner des paremetres pour tracer une trajectoire d'un projectile, tout ca avec la gestion du vent, un angle, le poid du projectile, et la vitesse du projectile ect...
Ce sont donc des courbes qui se produisent.
J'affiche des points a intervalles qui ne sont pas régulier, il différe en fait en fonction de la vitesse du projectile (si le projectile est en phase descendente, ca vitesse augmentera au fur et a mesure de la descente).
 
Il est donc possible que le rectangle soit entre deux points de la courbe, tout les points n'étant pas afficher pour donner un effet de vitesse.
Le probleme qui se pose donc dans ce cas, c'est que la fonction bounding box ne repere pas de collision alors qu'elle existe pourtant.
Voilà le screen d'un exemple concret qui vous paraitera peut etre plus clair.
http://abc.phpnet.org/autre/screen.jpg
 
J'aimerais donc savoir si vous voyez une solution algorithmique ou tout du moins mathématiques pour que la collision soit reperer.
 
Merci d'avance.

mood
Publicité
Posté le 31-12-2003 à 15:53:27  profilanswer
 

n°599930
antp
Super Administrateur
Champion des excuses bidons
Posté le 31-12-2003 à 15:56:22  profilanswer
 

Comme ça en vitesse je dirais que tu pourrais calculer les valeurs y pour chaque point qui a un x coïncidant avec le carré bleu, et si un des y est en dans le carré bleu, c'est que la ligne passe sur le carré.
Je ne suis pas sûr que le fait de se baser sur ce qui est affiché à l'écran soit la meilleure solution pour ce genre de choses :/


Message édité par antp le 31-12-2003 à 15:56:51

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°600384
DooMeeR
Posté le 01-01-2004 à 21:13:11  profilanswer
 

J'ai déjà beaucoup réfléchi à ce problème, et la meilleure solution que j'ai trouvée, c'est de faire une boucle pour tester "pas à pas" s'il y a collision. Je m'explique: si entre deux points tu as une distance (utilise Hypot pour la calculer) de 20 pixels par exemple, tu divises ce trajet par 20 pour tester pixel par pixel. Si le rectangle est vraiment gros tu peux sans doute découper en moins d'étapes pour gagner du temps.
 
Avantage: tu peux savoir exactement la dernière position avant laquelle il y a collision, et arrêter l'objet à cet endroit exact.
 
Le problème c'est si tu as beaucoup d'objets en jeu, je ne sais pas trop ce que ça peut donner.
 
Edit: en fait, ça revient à utiliser la solution de antp.


Message édité par DooMeeR le 01-01-2004 à 21:14:03
n°600544
bossamiral​2
Ctrl+Alt+Del
Posté le 02-01-2004 à 02:52:47  profilanswer
 

en faite si c'est pour un jeux, il ne serait pas plus judicieux d'analyser les vecteurs en X et Y, Z voir t.
 
tu fais donc ton calcule de colision dans le cas ou tu le dépasses tu reviens au point précédent et tu diminues ton incrément afin de trouver la position exacte de colision une fois ton système de point calculé tu l'affiches. Mais tu l'affiches uniquement après avoir calculez toute ta courbe. Voilà ton calcule aura toujours un peu d'avance sur l'affichage mais cela restera très correcte pour tes incréments de temps.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Algorithme de collision entre un point et un rectangle.

 

Sujets relatifs
Algorithme de parcoursAutorun et Power point
traiter le point du pavé numerique (remplacer par une virgule?)Algorithme de cryptage DES
Algorithme de creation d'un arbre balanceAlgorithme de B-Tree
algorithme de conversion RGB>YUVTracer une ligne entre deux point en mode console
[Power Point] Afficher un chrono ?algorithme quantique ???
Plus de sujets relatifs à : Algorithme de collision entre un point et un rectangle.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR