begin process at 2012 02 11 01:06:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Collision entre 2 rectangles


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

Collision entre 2 rectangles

mardi 14 novembre 2006 à 18:31:13 | Collision entre 2 rectangles

unrealgun

Membre Club

Hi,

Je débute le C++ et je programme sous windows avec la library Opengl, sans Glut.

Voila mon probleme :
je souhaite detecter une collision entre deux rectangles (2D), ce serait simple si ces rectangles ne tournaient pas...
Le centre de la rotation de chaque rectangle est son centre respectif.

J'aurais pu englober et considerer un rectangle plus gros, ou un cercle... mais je voudrais un algo de précision.


Merci d'avance de votre aide.

mardi 14 novembre 2006 à 18:34:03 | Re : Collision entre 2 rectangles

unrealgun

Membre Club

j'oubliais de préciser :
connus, pour chacun des deux rectangles :
- la hauteur, la largeur
- la position X et Y du centre
- l'angle de rotation

toutes ces proprietes peuvent etre differentes pour chacun des rectangles.

mardi 14 novembre 2006 à 19:48:38 | Re : Collision entre 2 rectangles

Galmiza

Tu as quel niveau en math ? Un indice: Si tu as A,B et C 3 points. (AB.x*BC.y-AB.y*BC*x)>0 si C est à gauche de la droite AB (si tu t'imagines en A en regardant vers B). Avec ça tu peux te débrouiller. Bonne chance !
mardi 14 novembre 2006 à 19:54:27 | Re : Collision entre 2 rectangles

Ombitious_Developper

Salut:

Utilises la fonction "IntersectRect" pour détecter l'intersection de deux rectangles.

BOOL IntersectRect( LPRECT lprcDst , // pointer to structure for intersection CONST RECT *lprcSrc1, // pointer to structure with first rectangle CONST RECT *lprcSrc2 // pointer to structure with second rectangle );
mardi 14 novembre 2006 à 20:01:40 | Re : Collision entre 2 rectangles

laurent1024

Membre Club
Tu peux aussi utiliser le théorème des axes séparateurs
http://www.flashxpress.net/wikimedia/index.php/D%C3%A9tection_De_Collision#Le_Th.C3.A9or.C3.A8me_de_l.27Axe_S.C3.A9parateur_.28TAS.29
mardi 14 novembre 2006 à 20:10:59 | Re : Collision entre 2 rectangles

Ombitious_Developper

Salut:

C'est une nouvelle chose à apprendre. Merci

mardi 14 novembre 2006 à 20:16:31 | Re : Collision entre 2 rectangles

Arnaud16022

Membre Club
Le plus rigolo c'est de recoder ça toi même atta ^^

la méthode : tu prends 2 sommets de ton rectangle. avec ça tu peux aisément connaître l'equa de la droite qui passe par ces 2 points.
pour chacune des droites de l'autre rectangle, tu regardes si ces 2 droites se coupent, et SI OUI, si l'intersection se situe bien entre les 2 sommets
Si tu es dans ce cas, les 2 rectangles se chevauchent, oui.

après tu aura encore un autre cas à gérer mais là t'as déjà de quoi faire ^^

_______________________
Omnia vincit labor improbus
mardi 14 novembre 2006 à 21:46:32 | Re : Collision entre 2 rectangles

unrealgun

Membre Club



Vous voue êtes surpassé... j'attendais pas tant de réponses aussi vite.

Désolé pour mon viveau de math, je suis en 2nde on vient juste de commencer le programme de maths.

Je vais tester ce que vous me proposez.

PS : arnaud, le CAS dont tu parle c'est bien lorsqu'on a une figure petite dans une autre figure plus grande sans que il y ait intersection des segments ?



Merci beaucoup. Vive cppfrance.

mardi 14 novembre 2006 à 21:56:56 | Re : Collision entre 2 rectangles

Arnaud16022

Membre Club
Exactement :)
Niveau 2nde -> largement suffisant je pense ( à vrai dire je ne me souviens plus bien du programme de 2nde :/ )
Bon atta j'ai déjà fait ça . Je vais voir si j'arrive à te le retrouver ( ça va etre dur :s )

_______________________
Omnia vincit labor improbus
mardi 14 novembre 2006 à 22:20:13 | Re : Collision entre 2 rectangles

unrealgun

Membre Club

euu... pourriez-vous juste me dire comment trouver la position d'un point du rectangle qui a tourné autour de son centre d'un angle défini , sachant qu'on connait la position initiale du point et la position du centre de rotation...  ?    

désolé si je vous soule mais c'est un forum d'entraide a ce que j'ai compris...


merci d'avance et excusez mon viveau pourri en math


1 2 3

Cette discussion est classée dans : centre, rectangles, rectangle, collision


Répondre à ce message

Sujets en rapport avec ce message

Au SECOURS !! [ par PepeDeLuxe ] Salut, Voila ça fait deux jours que je me prends la tete sur un truc ...Je travaille avec les MFC sous visual C++ 6 : J'ai crée tout simplement des r Bouton couleur+Rectangle couleur+redimensionnement de fenetre [ par dekriss ] Bonjour, Alors en gros mon problème est que dans mon programme en API sans MFC j'ai deux rectangles de couleur noire et grise pour faire le fond (je Probleme avec les collisions [ par Hyoga2037 ] Salut j'ai un probleme avec la dectection d'une collision en fait mon perso ne recule pas lorsque il est en contact avec le mur alors que ça devrai piking [ par seb_nachos ] bonjour, je créer une interface graphique Qt dans la quelle g une fenetre OpenGl. j'aimerais dessiner sur cette fenetre ! on m'a expliquer (on doit ut GTKMM dessiner une image ou presque [ par Ricool ] Bonjour, voici mon probleme, je dois dessiner une image dans un rectangle de taille variable (h, l) qui se redimensionne avec ma fenetre. Pour dessin SDL : linker error [ par bigben89 ] Ca fais à peine quelques mois que j'fais de la programmation (en C) et j'aimerais faire un peu de 2d et de 3d avec SDL. Je regarde des tutoriaux sur Ligne de collision [ par Magicking ] Comment on fait pour calculer les lignes de collisions sous DX8 avec DDraw ??? directX [ par pip ] Bonjour,Lorsque j'effectue une rotation d'un rectangle avec directX (en C++) j'obtient la chose suivante:Une InvalidateRect() [ par GreatNeo ] Voila je dessine un rectangle comme ceci:SetRect(&rect,25,25,625,250);Et après je veux rafraichir ce rectangle avec :InvalidateRect(hwnd,&rect,TRUE);M Rectangle(), float? [ par Xentor609 ] Salut, j'utilise la fonction Rectangle, pour dessiner un rectangle, le prob, ce't qu'il faut entrerdes int, et moi je voudrais y mettre des floats ou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 6,006 sec (3)

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