Déterminer si deux rectangles se chevauchent les uns les autres?

Je suis en train d'écrire un programme en C++ qui prend la suite des entrées de l'utilisateur de construire des rectangles (entre 2 et 5): la hauteur, la largeur, x-pos, y-pos. Tous ces rectangles existera en parallèle aux axes x et y, c'est l'ensemble de leurs bords doivent pentes de 0 ou l'infini.

J'ai essayé de mettre en œuvre ce qui est mentionné dans cette question, mais je suis de ne pas avoir beaucoup de chance.

Mon actuel de la mise en œuvre est le suivant:

//Gets all the vertices for Rectangle 1 and stores them in an array -> arrRect1
//point 1 x: arrRect1[0], point 1 y: arrRect1[1] and so on...
//Gets all the vertices for Rectangle 2 and stores them in an array -> arrRect2

//rotated edge of point a, rect 1
int rot_x, rot_y;
rot_x = -arrRect1[3];
rot_y = arrRect1[2];
//point on rotated edge
int pnt_x, pnt_y;
pnt_x = arrRect1[2]; 
pnt_y = arrRect1[3];
//test point, a from rect 2
int tst_x, tst_y;
tst_x = arrRect2[0];
tst_y = arrRect2[1];

int value;
value = (rot_x * (tst_x - pnt_x)) + (rot_y * (tst_y - pnt_y));
cout << "Value: " << value;  

Cependant, je ne suis pas tout à fait sûr si (un), j'ai implémenté l'algorithme de je lien correctement, ou si je n'ai exactement comment l'interpréter?

Des suggestions?

  • je pense que la solution à votre problème ne concerne pas toute multiplication.
InformationsquelleAutor Rob Burke | 2008-11-20